问题:
我有一个Angular应用程序可以正常工作。它有4个主页控制器,它们加载在ng-view中。所有控制器都连接到通过ngRoute路由的页面。
第一次加载应用程序时,它可以正常工作。但是,如果我转到任何这些页面并按下浏览器的刷新(f5),控制器将被调用两次。有没有理由说他们在第一次运行一次并且在重装中运行两次?
答案 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;
解决了这个问题。