所以...我正在尝试学习一些 Angular 的东西,然后我就陷入了困境。在我的应用程序中,我使用的是第三方 API,所以我不能依赖$http
,这就是您将$apply
在代码中看到的原因。
所以,基本上我有这个:
.when('/dashboard',{
controller : 'DashboardController',
templateUrl : 'ui/modules/dashboard/dashboard.html',
resolve : {
data : function(myService){
return myService.start();
}
}
})
到目前为止,没有什么奇怪的。这种方法应该有一个承诺,对吧?启动函数如下:
var start = function(){
return initializeConnection().then(function(){
return login(false);
});
};
所以,基本上,如果一切正常,一切正常。那太棒了。问题是,如果我在第二个函数(即login
)上得到承诺拒绝,我将无法捕捉到这个错误,这是我AppController
在应用程序顶部创建的错误(所以它总是被实例化):
$rootScope.$on("$routeChangeError", function (event, previous, current, rejection) {
console.log('Failing');
});
基本上从来没有调用过。我尝试过的一个可行的解决方案是从 start 函数返回一个 Promise,然后如果这些异步函数中的任何一个失败,则返回的 Promise 失败。但在我看来,这应该是不必要的。
你能为我指出正确的方向吗?