3

我有一个控制器执行两次的问题,但我没有可以看到的重复项(即使通过我的文件运行区分大小写的搜索也只在路由配置和我的实际控制器中显示一个)。

路线配置:

$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)
});
4

1 回答 1

8

我解决了这个问题。根据用户是否被授权使用ng-show="user.authorized"和 ,我有两种布局ng-show="!user.authorized"。每个人都有一个<div ng-view>. 无论是真还是假,每个ng-view都得到处理。ng-show

我没有意识到ng-show无论是否真实,所有内容都会被处理。

修复:使用ng-switch而不是ng-show. 这使视图在满足条件之前不会被处理。

于 2013-07-24T13:49:30.257 回答