Контроллер angularjs выполняет 2 раза
У меня проблема с тем, что контроллер выполняет два раза, но у меня нет дубликатов, которые я могу видеть (даже при запуске поиска с помощью сенсора в моих файлах отображается только один в конфигурации маршрута и мой фактический контроллер).
Конфигурация маршрута:
$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)
});
Ответы
Ответ 1
Я понял проблему. У меня было два макета в зависимости от того, разрешено ли пользователю использование ng-show="user.authorized"
и ng-show="!user.authorized"
. Каждый из них имел <div ng-view>
. Каждый ng-view
обрабатывается, является ли ng-show
true или false.
Я не понял, что все в ng-show
обрабатывается, правда ли или нет.
Исправлено: используется ng-switch
вместо ng-show
. Это предотвращает обработку представления до тех пор, пока условие не будет выполнено.