我有一个问题,控制器执行两次,但我没有可以看到的重复项(即使通过我的文件运行一个案例sensiTIve搜索只显示一个路由配置和我的实际控制器)。
路线配置:
$routeProvider.when('/cb159e1ec61d0613f10ab397d8bd6782',{
templateUrl: view+'passwordreset.html',
controller:'passwordreset'
});
控制器:
App.controller('passwordreset',['$scope','$http',
function($scope,$http){
$scope.token='asdf'
console.log($scope.token); // <-- logs 2x to console
}]);
passwordreset.html
:
<div class="row">
<div class="small-12 columns">
<fieldset class="content-box">
password reset {{token}}
</fieldset>
</div>
</div>
此外,我已经创建了一条新路线并尝试过,仍然会记录两次。我也清除了我的缓存。有些控制器执行一次,有些控制器执行两次(我在一些控制器中发出警报,一些显示一次,一些显示两次)
另一个例子:
//route config
$routeProvider.when('/', {
templateUrl: view+'home',
controller:'Home'
});
//template
<div ng-controller="testing">a</div>
//controller
Lmu.controller('Home',function($scope){
$scope.home='home';
alert($scope.home); <-- alerts 2x (two scopes for Home controller are created)
});
答案 0 :(得分:8)
我弄明白了这个问题。根据用户是否使用ng-show="user.authorized"
和ng-show="!user.authorized"
授权,我有两种布局。每个人都有一个<div ng-view>
。无论ng-view
是真还是假,每个ng-show
都会被处理。
我没有意识到ng-show
中的所有内容都被处理,无论是否真实。
修复:使用ng-switch
代替ng-show
。这样可以防止视图被处理,直到满足条件。