![](/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.