「解決」オブジェクトを使用して引数を渡し、コントローラーをインスタンス化しようとしています。構文は次のとおりです。
{
controller: 'HtmlModalController',
resolve: {
myarg: function() {
return "FOO";
}
}
}
これにより、コントローラーに "myarg" 変数が値 "FOO" の引数として挿入されます。
現在、この構文はプロミスもサポートしており、コントローラーのインスタンス化時に自動的に解決されます。
resolve: {
myarg: function() {
// Does the same as above (auto-resolved promise)
return $q.when("FOO");
}
}
さて、問題は次のとおりです。コントローラーに promise を挿入するにはどうすればよいですか? コントローラーがロードされたら解決するので、約束を解決したくありません。複数の promise をネストしようとしましたが、それらはすべてコントローラーで一度 "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")};
}
}
これが非ブロッキングの詳細であることは知っていますが、約束を「約束として」適切に解決する方法があるかどうか疑問に思います。
ありがとう =)