KnockoutJSを使用して作成しているページで見られる少し奇妙な動作を理解しようとしています。バインディングをクリアして再適用するたびに、監視可能な配列が重複するアイテムを取得するようです。問題を理解する最も簡単な方法は、このJSFiddleデモを確認することです。編集ボタンを数回クリックするだけで、このリストが大きくなるのを見ることができます。
このデモのコードの中心は、次の方法にあります。
var _bindItemDetail = function (jsonData) {
//clear existing bindings
ko.cleanNode($("#itemdetails").get(0));
// observables in selected item.
_viewModel.SelectedItem(ko.mapping.fromJS(jsonData));
// Apply Bindings
ko.applyBindings(_viewModel.SelectedItem, $("#itemdetails").get(0));
};
私が達成しようとしていることの本質は、リストと詳細ページを1つに作成することです。リストJSONは最初のページの読み込み時にフェッチされ、編集リンクがクリックされるたびに詳細JSONがフェッチされて「detail」htmlにバインドされます。
問題を解決することに加えて、私は動作を理解し、ノックアウトを使用するときに古いリソースを適切にクリーンアップする方法についていくつかのレッスンを学ぼうとしています。
助けてくれてありがとう