我需要在兩個控制器(控制器A和控制器B)之間共享數據。我有一個服務來分享數據。然而,如果我從視圖中使用「ng-model = shared.id」來設置共享變量的值,這可以工作,並且controllerB可以看到controllerA設置的值。如果我在controllerA中設置共享變量,那麼controllerB不會看到它。AngularJS當變量設置在另一個控制器上時,在控制器之間共享數據
app['controller']('controllerA', ['shared', function(shared){
//ControllerB will not see this for some reason, unless I set
//the value from the view using the ng-model=shared.id attribute.
shared['id'] = "123";
}]);
app['controller']('controllerB', ['shared', function(shared){
this['someId'] = shared['id'];
}]);
嗯 - 你必須重新分配它!您沒有傳遞對服務值的引用 - 您當時正在傳遞它。 – tymeJV
我不明白「在當時傳遞它」。我應該創建另一個變量這個['id'] =「123」然後將其分配給共享變量(共享['id'] = this ['id']) – drivers34
請參閱下面的答案 - 基本上 - 當您更新共享變量,使用該變量的任何內容也需要更新,更改不會自動獲取。在控制器中的含義是 - 你必須記得'this ['someId'] = shared ['id'];'當共享變量更新時。 – tymeJV