Angularjs $rootScope未在SPA中更新
我的第一个控制器:Angularjs $rootScope未在SPA中更新,angularjs,angularjs-scope,angular-ui-router,Angularjs,Angularjs Scope,Angular Ui Router,我的第一个控制器: angular.module('application') .controller('FirstController',['$rootScope',function($rootScope) { var data=[0,1,2]; $rootScope.items=data; }]); angular.module('application') .controller('SecondCon
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]
}]);
<pre>
{{$root.items | json}}
</pre>
我的第二个控制器:
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]
}]);
<pre>
{{$root.items | json}}
</pre>
当第二控制器运行时,其相应的视图被改变;但是,当返回到第一个控制器的相应视图时,会发生不同的情况(两个视图都绑定到$rootScope.items
)为什么会发生这种情况?我使用的是ui路由器
,FirstController与SPA的主页有关,SecondController与另一页有关。此外,通过跟踪$rootScope.items,可以:
{{$root.items | json}
在两个模板中,第二个模板更新为[3,1,2],第一个模板保留为[0,1,2]。在两个控制器之间传递相同的$scope不是维护单个数据模型的理想方式,您需要做的是建立一个服务模块(或工厂)来为您管理数据,这样两个控制器都可以与数据的因子对话 这就是你建立工厂的方式
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]
}
第二个控制器也是如此
您希望$rootScope.items[0]在返回FirstController时为0?当然不是!!恐怕我不明白这个问题,你能详细解释一下吗??