Angular Running Controller在浏览器重新加载时两次

时间:2015-04-23 08:51:13

标签: javascript angularjs

问题:

我有一个Angular应用程序可以正常工作。它有4个主页控制器,它们加载在ng-view中。所有控制器都连接到通过ngRoute路由的页面。

第一次加载应用程序时,它可以正常工作。但是,如果我转到任何这些页面并按下浏览器的刷新(f5),控制器将被调用两次。有没有理由说他们在第一次运行一次并且在重装中运行两次?

2 个答案:

答案 0 :(得分:0)

常见问题,您必须已将控制器加载到ui-router和HTML文件中。只需将其从HTML文件中删除,始终使用路由器注入控制器,这只是一个很好的做法。

答案 1 :(得分:0)

很抱歉,这是一个带回报的承诺的问题。

登录后我有以下代码

....
$scope.someMethod().then(function(_data){
...
    if (something not related to _data) {
       $route.reload();
    } else {
       $location.path("xcxcxcxcxcx");
    }
...
})

用某种方法..

$scope.something = function(){
    var deff = $q.defer();
    ....
    APICALL.callAPI(xxxxx).then(function(data){
       deff.resolve(data);
    }, function(error) {
        deff.reject();
    });        
    return deff.promise;
};

最后一次返回deff.promise将执行返回到前面的方法并运行$ route..reload();

我不是100%相信,而是删除

  

return deff.promise;

解决了这个问题。