更改URl而不在AngularJS中重新加载

时间:2016-02-16 12:55:56

标签: angularjs angular-ui-router

我使用以下代码更改URL而不在AngularJS中重新加载。但是当我使用这个功能时,如果我从这个控制器转到其他状态,它会重新初始化同一个控制器。我们如何在AngularJS中再次避免重新初始化同一个控制器。

州改变方法

completion

我怀疑此功能导致AngularJS中的控制器重新初始化问题。如果这是问题,我该如何解决控制器重新初始化?

1 个答案:

答案 0 :(得分:1)

这是Angular的工作原理。每次更改状态时都会重新初始化控制器。如果您有跨州共享的数据,则应将其放在服务或工厂中,然后在控制器中引用它。

示例:

<强>控制器

angular.module('Test')
    .controller('TestController', ['TestService', TestController]);

function TestController(TestService) {
    var self = this;
    self.data = TestService.sharedData;
}

<强>服务

angular.module('Test')
     .service('TestService', [TestService]);

function TestService() {
   var self = this;

   self.sharedData = ['array', 'of', 'data'];
}