使用ui-router时,AngularJS可能无法处理拒绝

时间:2016-10-08 11:49:09

标签: angularjs angular-ui-router

在我从ngRoute更改为angular-ui-router后,控制台始终显示4个错误:可能未处理的拒绝:{}

我没有注意到任何"问题"在我正在构建的应用程序的行为中,但我想摆脱它。

任何想法是什么意思以及如何解决它?

这是一个截图: enter image description here

4 个答案:

答案 0 :(得分:22)

此问题可在1.5.9和1.6.0-rc-0中找到。 更多详情请见https://github.com/angular-ui/ui-router/issues/2889

补丁解决方案是手动禁用未处理的拒绝。

app.config(['$qProvider', function ($qProvider) {
    $qProvider.errorOnUnhandledRejections(false);
}]);

答案 1 :(得分:1)

如果您查看angular-ui-router文件中uiCanExit的逻辑(我正在使用v1.0.16),它将仅检查已解决的承诺,而不检查被拒绝的承诺。就像这样:

promise.then(function (val) { 
    return val !== false ? next_transition : current_transition
});

只需返回带有假值的已解决承诺即可取消过渡。 例如,

defer.resolve(false)

答案 2 :(得分:0)

如果您尝试中止转换,请使用false解析promise。

答案 3 :(得分:0)

我使用了下一个解决方案

    $http.get('/api/get').then(function(result) {
       // ... stuff here
    }).catch(angular.noop);

它等于

$http.get('/api/get').then(function(result) {
  // ... stuff here
}).catch(function(){});