私はAureliaテンプレートの1つに非同期の値をバインドしようとしていますが、明らかに返されるのは[object Promise]
です。Aureliaでの非同期バインディング
私は見事にこのようになります結合挙動を使用してこの問題を解決する方法について説明し、この記事http://www.sobell.net/aurelia-async-bindings/が見つかりました:
// http://www.sobell.net/aurelia-async-bindings/
export class asyncBindingBehavior {
bind (binding, source) {
binding.originalUpdateTarget = binding.updateTarget;
binding.updateTarget = a => {
if (typeof a.then === 'function') {
binding.originalUpdateTarget('...');
a.then(d => {
binding.originalUpdateTarget(d);
});
}
else {
binding.originalUpdateTarget(a);
}
};
}
unbind (binding) {
binding.updateTarget = binding.originalUpdateTarget;
binding.originalUpdateTarget = null;
}
}
約束は、文字列またはその他の非オブジェクトなどで解決時にこれは完璧に動作変数。
私の約束がオブジェクトで解決されるとどうなりますか?そのオブジェクトの中で必要なプロパティにアクセスするにはどうすればいいですか?
私の場合:${object.property & async}
私のテンプレートの中にそれゆえ、失敗するでしょうobject.property
は約束していません - object
です。
私は私はこのように、async
の引数としてプロパティを指定することができますハックのビットを追加しました:${object & async:'property'}
をそのように私の結合挙動を更新:
// http://www.sobell.net/aurelia-async-bindings/
export class asyncBindingBehavior {
bind (binding, source, property) {
binding.originalUpdateTarget = binding.updateTarget;
binding.updateTarget = a => {
if (typeof a.then === 'function') {
binding.originalUpdateTarget('...');
a.then(d => {
if (property) {
binding.originalUpdateTarget(d[property]);
}
else {
binding.originalUpdateTarget(d);
}
});
}
else {
binding.originalUpdateTarget(a);
}
};
}
unbind (binding) {
binding.updateTarget = binding.originalUpdateTarget;
binding.originalUpdateTarget = null;
}
}
しかし、これは、Aのように非常に感じています私にハックすると、object.parent.child
のようなより深い属性にアクセスすることもできません。
getValue
メソッドを使用しているGitHub:https://github.com/aurelia/templating/issues/81でこの(かなり古い)問題が見つかりました。私はこの方法について聞いたことがないし、使用しようとすると失敗するので、どのように動作するのかわからない...
アイデア?
あなたは何を意味しているのですか。私は、私が必要とする価値を抽出したいものを何でもできるので、関数がより意味をなさないと思う。しかしこれは本当にこれを行う最善の方法ですか?理想的には '$ {object.property&async} 'のようなものが_love_になります。おそらく、私は何とか「財産」から「オブジェクト」まで「歩く」ことができましたか? – powerbuoy
"dot.separated.property.string"、 ".split( '。')'を渡して、関連するドリルダウンを行い、 'd [" dots "] [" separated "] [" property " ] ["string"] 'しかし、それは確かに関数より柔軟性が低く、間違いなくもっと面倒です。 –
申し訳ありませんが、この質問をもう少し開いたままにしておきます。 – powerbuoy