每次路由视图时都会执行AngularJS控制器

时间:2014-10-10 11:51:05

标签: javascript angularjs

每次我通过以下链接更改路径

<li><a href="#/home">Home</a></li>

路由器定义中视图的控制器再次运行。

config(['$routeProvider', '$locationProvider',
    function($routeProvider, $locationProvider) {
        // $locationProvider.hashPrefix('!');

        $routeProvider.when('/home', {
            templateUrl: 'partials/home.html',
            controller: 'mainCtrl'
        });
        $routeProvider.when('/test', {
            templateUrl: 'partials/test.html',
            controller: 'testCtrl'
        });
        $routeProvider.otherwise({
            redirectTo: '/home'
        });
    }
]);

我不认为这是默认行为(我在文档中没有提到它),但是我看不出问题是什么。

P.S。

我没有为我的模板中的任何DOM元素分配ng-controller,因为我看到其他人有类似的问题,这就是问题所在。

1 个答案:

答案 0 :(得分:3)

这是默认行为 基本上,控制器是用于参数Angular Scope的函数。因此,每次打开与控制器关联的页面时都需要调用它。每次页面导航时,angular都会创建新的范围。