我的第一个控制者:
angular.module('application')
.controller('FirstController',['$rootScope',function($rootScope) {
var data=[0,1,2];
$rootScope.items=data;
}]);
我的第二个控制员:
angular.module('application')
.controller('SecondController',['$rootScope',function($rootScope) {
$rootScope.items[0]=3;
console.log($rootScope.items); // [3,1,2]
}]);
当第二个控制器运行时,其相应的视图被改变;但是回到第一个控制器的相应视图时会发生同样的情况(两个视图都绑定到$rootScope.items
)。 为什么会这样?我正在使用ui-router
,FirstController与SPA的主页面和SecondController与另一个页面有关。此外,通过跟踪$ rootScope.items:
<pre>
{{$root.items | json}}
</pre>
在两个模板中,第二个更新为[3,1,2],第一个仍为[0,1,2]。
答案 0 :(得分:0)
在两个控制器之间传递相同的$ scope并不是维护单个数据模型的理想方式,您需要做的是建立一个服务模块(或工厂)来为您管理数据,这样两个控制器都可以与您的数据因素进行对话。
这是您设置工厂的方式
app.factory("Data",
function () {
var storage = [0,1,2]; // where your data is
return {
get: function () {
return storage;
},
set: function (toSet) {
storage = toSet;
return storage;
}
};
});
让控制器知道数据的位置,使用
app.controller ("FirstController",
function ($scope, Data)
{
console.log(Data); // [0,1,2]
Data.set( [3,1,2]); // demoing change
}
同样适用于第二个控制器
app.controller ("FirstController",
function ($scope, Data)
{
console.log(Data); // [3,1,2]
}