Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 拒绝将ui路由器状态转换到控制台的承诺的不必要打印错误_Javascript_Angularjs_Angular Ui Router - Fatal编程技术网

Javascript 拒绝将ui路由器状态转换到控制台的承诺的不必要打印错误

Javascript 拒绝将ui路由器状态转换到控制台的承诺的不必要打印错误,javascript,angularjs,angular-ui-router,Javascript,Angularjs,Angular Ui Router,我使用angular 1的ui路由器状态定义属性来提供一个返回承诺的函数。提供的函数应检查是否允许用户访问该状态 如果返回的承诺被拒绝,状态转换就不会发生——这正是我想要实现的。此外,我还可以监听$stateChangeError事件,以获取有关拒绝的详细信息。一切正常 我的问题是,错误被打印到控制台,这是我想要避免的 考虑以下状态定义: $stateProvider.state({ name: 'about', url: '/about', template: '<

我使用angular 1的ui路由器状态定义属性来提供一个返回承诺的函数。提供的函数应检查是否允许用户访问该状态

如果返回的承诺被拒绝,状态转换就不会发生——这正是我想要实现的。此外,我还可以监听$stateChangeError事件,以获取有关拒绝的详细信息。一切正常

我的问题是,错误被打印到控制台,这是我想要避免的

考虑以下状态定义:

$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。。。