![](/img/trans.png)
[英]how to use services in angularjs to share data across multiple controllers?
[英]Angularjs share data across controllers
我使用服务来共享跨控制器的数据,并且可以正常工作。 第一页使用名为ACtrl
的控制器:
<a ng-click='doit()'>click me</a>
第二页使用另一个控制器BCtrl
:
<label>{{person.name}}</label>
在doit
函数中,我使用服务共享了一个对象。 在BCtrl中,我得到了共享对象,一切都很好。 但是我想第二页打开另一个窗口,所以我将第一页更改如下:
<a ng-click='doit()' href='_blank'>click me</a>
然后第二页不起作用。 那么如何解决这个问题呢?
您可以通过事件发送数据,例如
快捷键
data = {a: 1, b: 2}
$rootScope.$broadcast('dataChanged', data);
BCtrl
$scope.$on('dataChanged', function(e, data) {
console.log(data);
}
首先在service.js中定义工厂服务
.factory('DataScopeService', function($rootScope) {
var mem = {};
return {
set: function(key, value) {
mem[key] = value;
},
get: function(key) {
return mem[key];
}
};
})
然后,使用此服务来设置和从项目中的任何控制器获取数据。
控制器A
DataScopeService.set("selectedTimePeriod", '1');
控制器B
$scope.selectedTime = DataScopeService.get("selectedTimePeriod")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.