Javascript 拒绝将ui路由器状态转换到控制台的承诺的不必要打印错误
我使用angular 1的ui路由器状态定义属性来提供一个返回承诺的函数。提供的函数应检查是否允许用户访问该状态 如果返回的承诺被拒绝,状态转换就不会发生——这正是我想要实现的。此外,我还可以监听$stateChangeError事件,以获取有关拒绝的详细信息。一切正常 我的问题是,错误被打印到控制台,这是我想要避免的 考虑以下状态定义:Javascript 拒绝将ui路由器状态转换到控制台的承诺的不必要打印错误,javascript,angularjs,angular-ui-router,Javascript,Angularjs,Angular Ui Router,我使用angular 1的ui路由器状态定义属性来提供一个返回承诺的函数。提供的函数应检查是否允许用户访问该状态 如果返回的承诺被拒绝,状态转换就不会发生——这正是我想要实现的。此外,我还可以监听$stateChangeError事件,以获取有关拒绝的详细信息。一切正常 我的问题是,错误被打印到控制台,这是我想要避免的 考虑以下状态定义: $stateProvider.state({ name: 'about', url: '/about', template: '<
$stateProvider.state({
name: 'about',
url: '/about',
template: '<h3>Its the UI-Router hello world app!</h3>',
resolve: {
isAllowed:function(){
return new Promise(function(resolve, reject){
reject(new Error("not allowed"));
});
}
}
});
无论何时访问此状态,都会导致以下错误打印到控制台:
请参阅下面的示例
有没有办法在保持其他行为的同时消除控制台错误?因为您使用的ui路由器版本是angular ui-router@1.0.0,是测试版,脚本中只剩下很少的console.log行
因此,您可以使用更稳定的版本来解决此问题,例如,您可以使用angular ui-router@0.3.1
这在保持其余行为的同时消除了控制台错误
自从您使用的ui路由器版本为angular ui以来-router@1.0.0,是测试版,脚本中只剩下很少的console.log行
因此,您可以使用更稳定的版本来解决此问题,例如,您可以使用angular ui-router@0.3.1
这在保持其余行为的同时消除了控制台错误
这可能是因为您正在使用的angular ui路由器的版本。尝试此版本中不会出现错误。可能是因为您使用的angular ui路由器的版本。尝试此版本中不会出现错误。您可以使用以下替代方法:
$rootScope.$on('$stateChangeStart', function (evt, toState,
toParams, fromState, fromParams, options) {
if(not_allowed) {
evt.preventDefault();
}
}
您可以使用如下替代方法:
$rootScope.$on('$stateChangeStart', function (evt, toState,
toParams, fromState, fromParams, options) {
if(not_allowed) {
evt.preventDefault();
}
}
顺便说一句,你可以用Promise.reject代替新的Promise…顺便说一句,你可以用Promise.reject代替新的Promise。。。