2014-09-21 53 views
0

我是usnig AngularJs 1.2.25。我有一个路由配置:使用angularjs时重复控制器

$routeProvider.when(
    '/config-root', 
    { 
     templateUrl: configRootTemplate, 
     controller: "ClientConfig", 
    } 
).when(
    '/config-action/:action/:_id', 
    { 
     templateUrl: configActionTemplate, 
     controller: "ClientConfigAction", 
    } 
).otherwise({redirectTo: '/'}); 

在ClientCOnfig控制器,我有一个模板$ scope.listConfig变量绑定创建,更新配置的列表。

一切正常,当我第一次访问“config-root”路由时,我可以生成,更新...列表。

但是当第二次或那么远时,$ scope.listConfig在生成列表时更新正确,更新...但模板不会更改。

我想当我再次访问该路由时,创建了$ scope的新实例,并且不与该模板绑定。

我该如何解决?

回答

0

您可以使用rootScope保留下次的值。

$scope更改为$ rootScope,并在需要时访问它。

如果您不想污染$ rootScope,则只需将值存储在localStorage中作为字符串并在需要时将其提取。

// To store the value 
localStorage['config'] = JSON.stringify(someObj) 
// To fetch the value 
var myConfigObj = JSON.parse(localStorage['config']) 
+0

谢谢你的回答,但我认为这个解决方案不是我的需要。因为$ rootScope是全局的,所以不适合管理变量。如果使用localStorage,我不能使用angularjs的数据绑定。 – ronin1184 2014-09-21 14:05:19

+0

比你可以使用常量,你可以注入到任何控制器。参考angularjs常量。 – Siddhartha 2014-09-21 16:50:33