在同级Angularjs之间共享数据
Share data between siblings Angularjs
我有这样的节点
3
------------
| |
----- ------
1 | 2 |
我想要1 &2
我在stackoverflow上找到了一个方法,就像
two.js
$scope.$emit('messageTwo', someValue(s));
three.js
$scope.$on('messageTwo', function( event, data ){
$scope.$broadcast( 'messageTwo', data );
});
one.js
$scope.$on('messageTwo', someValue(s));
这个方法非常有效。我尝试了下面的选项,它工作。下面的代码也是正确的吗?
two.js
$scope.$emit('messageOne', someValue(s));
one.js
$scope.$parent.$on('messageOne', function( event, data ){
console.log( data );
});
它确实可以工作,但是当作用域1被销毁时,您需要手动注销侦听器。
var messageListener = $scope.$parent.$on('messageOne', ...)
$scope.$on('$destroy', messageListener)
你也可以反过来,在父作用域甚至$rootScope
上广播。
two.js
$scope.$parent.$broadcast('messageOne', someValue(s));
one.js
$scope.$on('messageOne', function( event, data ){
console.log( data );
});
如果你需要在event.targetScope
中访问one.js的$作用域,$emit是一个不错的选择。
如果你只想共享数据,你也可以使用共享服务实例,或者只是在共享父控制器的作用域中使用一个变量。
如果你想在兄弟之间共享数据,你可以使用服务或工厂。
如果它位于父级到子级或子级到父级之间,你可以使用$broadcast或$emit,或者直接使用$rootscope。
相关文章:
- 使用服务(AngularJS)在控制器之间共享数据
- AngularJS中的页面之间共享数据返回空
- 通过共享服务在两个不同ng应用程序中的控制器之间共享数据
- 使用Angularjs在两个不同页面的控制器之间共享数据
- 2ng控制器,并且需要在控制器之间共享数据
- 在控制器angular js之间共享数据
- 如何在 Angularjs 中的交叉模块之间共享数据
- 如何在rapaidjs中的视图之间共享数据
- AngularJS中共享数据服务初始化失败
- Flash Professional HTML5 Canvas:是否可以在HTML表单和Canvas之间共享数据
- 在HTML页面之间共享数据
- 在javascript(客户端)中跨多个窗口共享数据
- 节点在服务器之间共享数据&客户
- 无法在 AngularJS 中获取服务中的共享数据
- 在 AngularJS 中的控制器之间共享数据的惯用方法
- 如何在 AngularJS 中的两个独立模块之间共享数据
- Ember 使用 Mixin OR Service 进行共享数据
- 使用服务更新 2 个控制器之间的共享数据
- 如何在浏览器选项卡之间共享数据
- AngularJS:在控制器之间共享数据,具有服务和 restangular