我正在尝试实例化一个控制器,使用“resolve”对象传递参数。这是语法:
{
controller: 'HtmlModalController',
resolve: {
myarg: function() {
return "FOO";
}
}
}
这将导致我的控制器将“myarg”变量作为参数注入,值为“FOO”。
现在,这种语法还支持 Promise,它会在实例化控制器时自动解析。
resolve: {
myarg: function() {
// Does the same as above (auto-resolved promise)
return $q.when("FOO");
}
}
现在,问题是:如何将承诺注入控制器?我不希望承诺得到解决,因为一旦加载控制器,我就会解决它。我尝试嵌套多个承诺,但它们都在控制器中解析回“FOO”值。
resolve: {
myarg: function() {
// All promises are resolved for me :'(
return $q.when($q.when("FOO"));
}
}
我现在唯一的解决方案是将承诺包装到一个函数/对象中:
resolve: {
myarg: function() {
// So in my controller I can do "myarg.promise.then(...)"
return {promise: $q.when("FOO")};
}
}
我知道这是一个非阻塞细节,但我想知道是否有办法正确解决“作为一个承诺”的承诺。
谢谢 =)