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" 为真时全部解决。在其他情况下,我不想全部解决。
是否可能,或者我应该使用不同的逻辑。
这里的主要问题是当你写这样的代码时,我认为所有的功能(在键之后)都是异步执行的。但正如我所见(如果为真),你必须等待结果来决定下一步行动是什么。那么,你为什么不把你的代码(可能是 if-else)来决定在 promise 的成功和失败函数中调用的函数。
您可以通过将其作为依赖项注入来让下一个承诺等待上一个承诺:
resolve: {
firstResolve: function() {
return 'A result';
},
nextResolve: function(firstResolve) {
// firstResolve has the value 'A result' here
}
}
从技术上讲,第二个解析将执行,但您可以根据第一个解析的结果来确定您的逻辑。
你能检查一下我的代码吗:
.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" 为真时全部解决。在其他情况下,我不想全部解决。 是否可能,或者我应该使用不同的逻辑。
这里的主要问题是当你写这样的代码时,我认为所有的功能(在键之后)都是异步执行的。但正如我所见(如果为真),你必须等待结果来决定下一步行动是什么。那么,你为什么不把你的代码(可能是 if-else)来决定在 promise 的成功和失败函数中调用的函数。
您可以通过将其作为依赖项注入来让下一个承诺等待上一个承诺:
resolve: {
firstResolve: function() {
return 'A result';
},
nextResolve: function(firstResolve) {
// firstResolve has the value 'A result' here
}
}
从技术上讲,第二个解析将执行,但您可以根据第一个解析的结果来确定您的逻辑。