angularjs控制器执行2次

Eri*_*ell 3 javascript angularjs

我有一个问题,控制器执行两次,但我没有我能看到的重复项(即使运行一个案例sensiTIve搜索我的文件只显示一个在路由配置和我的实际控制器).

路线配置:

$routeProvider.when('/cb159e1ec61d0613f10ab397d8bd6782',{
    templateUrl: view+'passwordreset.html',
    controller:'passwordreset'
});
Run Code Online (Sandbox Code Playgroud)

控制器:

App.controller('passwordreset',['$scope','$http',
    function($scope,$http){
        $scope.token='asdf'
        console.log($scope.token); // <-- logs 2x to console
}]);
Run Code Online (Sandbox Code Playgroud)

passwordreset.html:

<div class="row">
    <div class="small-12 columns">
        <fieldset class="content-box">
            password reset {{token}}
        </fieldset>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

此外,我已经创建了一个新的路线并尝试过,仍然会记录两次.我也清除了我的缓存.有些控制器执行一次,有的两次(我在一些控制器中发出警报,一些显示一次,一些显示两次)

另一个例子:

//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)
});
Run Code Online (Sandbox Code Playgroud)

Eri*_*ell 8

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

我没有意识到ng-show处理中的所有内容是否真实.

修复:用来ng-switch代替ng-show.这样可以防止视图被处理,直到满足条件.