繁体   English   中英

AngularJS UI路由器解析路由

[英]Angularjs ui-router resolve in route

您可以检查一下我的代码:

    .state('addNewGroup', {
    url: '/group/new',
    resolve:{
        "checkPermission": function ($state, checkPermission) {
            checkPermission.checkPermission()
                .then(function (result) {
                    if (result) {
                        alert('Hello');
                    } else {
                        alert('access denied');
                    }
                })
        },
        "otherStuff": function () {
            console.log("Should execute only if result in 'checkPremission' is true");
        }

    },
});

问题

我在路由配置中有两个承诺。 是否有可能仅解决特定的承诺? 假设我有5个诺言要解决,并且仅在“ checkPremission”为true时才想解决所有诺言。 在其他情况下,我不想解决所有问题。 有可能还是我应该使用其他逻辑。

这里的主要问题是,当您编写这样的代码时,我认为所有功能(在键之后)都是异步执行的。 但是,正如我所看到的(如果为真),您必须等待结果决定下一步是什么。 因此,为什么不放置代码(可能是if-else)来确定在promise的成功和失败函数中将调用的函数。

您可以将下一个承诺作为依赖项注入,从而使下一个承诺等待上一个承诺:

resolve: {
  firstResolve: function() {
    return 'A result';
  },
  nextResolve: function(firstResolve) {
    // firstResolve has the value 'A result' here
  }
}

从技术上讲,将执行第二个解决方案,但是您可以基于第一个解决方案的逻辑。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM