私はこのようなビューを持っています:
<xsl:comment>ko with: resolve(1)</xsl:comment>
<xsl:comment>ko template: { name: typeName }</xsl:comment>
<xsl:comment>/ko</xsl:comment>
<xsl:comment>/ko</xsl:comment>
そして、次のようなメソッドを持つビューモデル(ビューのデータコンテキスト):
self.resolve = function (id) {
var obs = ko.observable(null);
self.getItemByIdAsync(id).done(obs);
return obs;
};
何らかの理由で、これは無限ループになります。私の推測では、with-binding はオブザーバブルの値に依存すると考えておりobs
、それが更新されると with-binding は何度も何度も解決を実行しようとします...
resolve が 1 回だけ実行されるように、このコードを変更するにはどうすればよいですか?
私がやろうとしているのは、ビューが提示したいものに適応する動的ビューモデルを持つことです。ビューが特定のビューモデル コンテキスト内のアイテムを解決しようとする場合、このアイテムを非同期にロードし、新しいビューモデルを作成して、それを子ビューモデルとして datacontext-vm に追加する必要があります。
他の場所でこの非同期の観測可能なパターンを見たことがありますが、間違って使用しているようです。