簡體   English   中英

AngularJS在控制器之間共享數據

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM