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?当然不是!!恐怕我不明白这个问题,你能详细解释一下吗??