【发布时间】:2017-10-27 20:01:35
【问题描述】:
我在一次采访中遇到过这个问题,我知道如何使用服务和使用根范围在两个控制器之间共享数据。有什么办法可以在不使用服务和根范围的情况下在两个控制器之间传递数据>
请有任何建议。
【问题讨论】:
标签: angularjs
我在一次采访中遇到过这个问题,我知道如何使用服务和使用根范围在两个控制器之间共享数据。有什么办法可以在不使用服务和根范围的情况下在两个控制器之间传递数据>
请有任何建议。
【问题讨论】:
标签: angularjs
AngularJs 使用由发送和读取事件组成的观察者模式。
很多时候,应用程序的一个部分发生了变化,其他部分也需要更新。在 AngularJS 中,如果 $scope 对象更新,可以触发一个事件来通知另一个组件。观察者模式就是这样结合的——如果一个对象被修改,它会向依赖对象广播发生了变化。
简而言之:
$scope.$emit() 或 $scope.$broadcast() 取决于您的职位以及您的“读者”是什么
然后
$scope.$on()
【讨论】:
最佳实践表明使用服务,您也可以通过分配对象文字$rootScope.sharedVar 来使用$rootScope。还有一个$broadcast 方法,它是一种观察者模式,类似于pub/sub。
最不推荐的方法是利用您的 $parent 范围并向下钻取您的元素(取决于它在 DOM 树中的位置)
【讨论】: