我在采访中遇到过这个问题,我知道如何使用服务和使用根范围在两个控制器之间共享数据。有没有任何方法可以在两个控制器之间传递数据而不使用服务和根范围>
请提出任何建议。
答案 0 :(得分:1)
AngularJs使用观察者模式,该模式包括发送和阅读事件。
有很多时候应用程序的一部分发生变化,其他部分需要更新。在AngularJS中,如果$ scope对象更新,则可以触发事件以通知另一个组件。观察者模式只包括 - 如果一个对象被修改,它会向依赖对象广播发生了变化。
简而言之:
$scope.$emit()
或$scope.$broadcast()
取决于您的位置以及您的“读者”
然后
$scope.$on()
答案 1 :(得分:1)
使用服务的最佳做法是,您还可以通过分配对象文字$rootScope
来使用$rootScope.sharedVar
。还有一个$broadcast
方法,它是一个观察者模式,就像pub / sub一样。
最不推荐的方式是利用您的$parent
范围并向下钻取您的元素(取决于它在DOM树中的位置)