Angularjs在两个模块之间共享数据
Angularjs Share data between two modules
我试图在两个不同模块的两个控制器之间共享服务。我看过一些帖子,让我相信我走在正确的道路上,在这里和这里。但我显然漏掉了什么。这是我的代码和一个codependency。
索引被设置好了,但是isSidebarActive没有像人们期望的那样被自动触发。任何帮助都将非常感激。谢谢你!
index.js
angular
.module('app', ['app.layout', 'app.sidebar']);
angular
.module('app.layout', [])
.service('layoutService', function() {
var vm = this;
var sidebarStatus = null;
vm.isSidebarActive = function() {
console.log('isSidebarActive: ' + (sidebarStatus ? 'true' : 'false'));
return sidebarStatus;
};
vm.setSidebarStatus = function(status) {
console.log('setSidebarStatus: ' + (status ? 'true' : 'false'));
sidebarStatus = status;
};
})
.controller('ShellController', ['layoutService', function(layoutService) {
var vm = this;
vm.isSidebarActive = function() {
return layoutService.isSidebarActive();
}
}]);
angular
.module('app.sidebar', ['app.layout'])
.controller('SidebarController', ['layoutService', function(layoutService) {
var vm = this;
var index = null;
vm.setIndex = function(i) {
index = i;
layoutService.setSidebarStatus(i > 0);
console.log('setIndex: ' + index);
};
vm.isIndex = function (i) {
return index === i;
};
}]);
index . html
<body ng-app="app">
<div ng-controller="ShellController as shell">
<div class="alert alert-info" ng-show="shell.isSidebarActive">active</div>
<div class="alert alert-warning" ng-hide="shell.isSidebarActive">non-active</div>
<div/>
<div ng-controller="SidebarController as sidebar">
<a class="btn" ng-click="sidebar.setIndex(1)">active</a>
<a class="btn" ng-click="sidebar.setIndex(0)">non-active</a>
<div/>
</body>
试试这个:
<body ng-app="app">
<div ng-controller="ShellController as shell">
<div class="alert alert-info" ng-show="shell.isSidebarActive()">active</div>
<div class="alert alert-warning" ng-hide="shell.isSidebarActive()">non-active</div>
<div/>
<div ng-controller="SidebarController as sidebar">
<a class="btn" ng-click="sidebar.setIndex(1)">active</a>
<a class="btn" ng-click="sidebar.setIndex(0)">non-active</a>
<div/>
</body>
必须调用ng-show
和ng-hide
中的shell.isSidebarActive()
函数http://codepen.io/anon/pen/EjpeoR
相关文章:
- 如何在 Angularjs 中的交叉模块之间共享数据
- 角度控制器名称在模块之间冲突
- 网络应用程序:模块之间相互交流
- 如何在模块之间共享对象
- RequireJS:如何在模块之间传递更新的数据
- 角度依赖注入,使用服务在模块之间传递值
- 如何在模块之间更新此变量的值
- 在模块之间传递对象引用
- 在模块之间传递值
- 在模块之间共享的事件发射器
- 如何在 AngularJS 中的两个独立模块之间共享数据
- 奇怪的壁虎行为(试图在js模块之间传递一个nsiDomWindows数组)
- Angular - 如何在模块之间共享控制器
- 如何在javascript模块之间进行通信
- 减少RequireJS模块之间的代码重复
- 如何在requirejs、javascript中的不同模块之间共享数据
- 寻找在模块之间导出和导入变量的最佳方式
- 什么'这是允许一个节点进程在其自己的模块之间进行通信的最具规模友好的方式
- PubSub模式用于在两个解耦的javascript模块之间传输数据
- 如何在两个模块之间传递事件数据