我需要在两个控制器(控制器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