これは一種の2つの部分の問題です。
まず、テンプレートバインディングでアフターレンダーを使用して、テンプレートが新しいデータをレンダリングするたびにアクションを実行します。それは正しく機能します...それがあまりにも正しく機能することを除いて。データが追加または削除されない限り、起動しません。
次に、最初の「問題」と戦うために、カスタムの「更新」を作成し、データが変更されたかどうかを検出する必要があると考えました。これも理にかなっていますが、マッピングの更新関数も「データが追加または削除された場合にのみ実行する」という考え方に従っていることに気付きました。
そこで、次のようなマッピングモデルの特定のプロパティを更新する必要があると考えました。
var dataMappingOptions = {
key: function(data) {
return data.id;
},
create: function(options) {
return new Person(options.data);
},
update: function(options) {
// if first changed, doSomething();
return options.target;
},
'first': {
update: function(options) {
// if first changed, doSomething();
return options.target.first;
}
}
};
しかし、それはまったくの混乱に変わり、機能すらしません。
チェックアウトしたい場合は、こちらがFIDDLEです。
簡単に言えば、プロパティが更新されているときに、プロパティをサブスクライブする方法があるはずだと確信していますか?多分あなたは計算されたオブザーバブルを作らなければならないのだろうか?私はこれをあちこちに投げて、ライアンがすでに何度も持っているので、ライアンが私に教えたいかどうかを確認します:)