我有一个angularjs路由,其解析对象具有多个属性,如:
.state('user', {
url: '/user/signup',
controller: 'CreateAccountCtrl',
templateUrl: 'createaccount.tpl.html',
resolve: {
practice: {
// Returns a promise
},
someOtherFunction: {
// Returns a promise, needs resolved object from practice
},
}
})
问题在于我需要其中一个解决方案的结果来处理另一个解决方案。我该如何实现呢?显然,我可以将所有的http调用放在一个函数中并构建一个自定义对象,但我想知道是否有一个更惯用的解决方案。
答案 0 :(得分:1)
将resolve
方法的两个属性转换为函数,并将一个方法按名称传递给另一个方法作为参数。
.state('user', {
url: '/user/signup',
controller: 'CreateAccountCtrl',
templateUrl: 'createaccount.tpl.html',
resolve: {
practice: function() {
// Returns a promise
},
someOtherFunction: function(practice) {
// Returns a promise, needs resolved object from practice
}
}
})
此外,this blog post是使用Angular UI路由器的绝佳资源。我在那里学到了这种方法。
答案 1 :(得分:0)
使用IIFE返回resolve
对象:
...
resolve: (function () {
var practicePromise;
var someOtherPromise;
/* initialize the variables whichever way you want*/
return { /* this is the actual "resolve" object*/
practice: practicePromise,
someOther: someOtherPromise
};
} ()),
...