ノックアウトjsテンプレートバインディング機能を使用して、アイテムのコレクションを要素にレンダリングしています。
<script type="text/javascript">
ko.applyBindings(new function () {
this.childItems = [{ Text: "Test", ImageUrl: "Images/Image.png" }];
});
</script>
<script type="text/html" id="template">
<div class="childItem" data-bind="attr: { title: Text }">
<img data-bind="attr: { src: ImageUrl }" />
</div>
</script>
<div class="childSelector" data-bind="template: { name: 'template', foreach: childItems }">
</div>
クリックすると、子アイテムが複製され、別の要素に配置されます。
$(".childSelector").on("click", ".childItem", function () {
var clone = $(this).clone()[0];
ko.cleanNode(clone);
$(".targetNode").append(clone);
});
問題は、ソースデータが変更され、テンプレートが新しいデータに再バインドされると、次のエラーがスローされることです。
キャッチされないエラー:バインディングを解析できません。メッセージ:ReferenceError:テキストが定義されていません。バインディング値:attr:{タイトル:テキスト}
ko.cleanNode(element)
ノックアウトのバインディングを削除するために使用することを提案する別の投稿を見つけましたが、これは私の場合の問題を解決していません。
再バインド時にこのエラーを防ぐために、複製された要素のノックアウトのバインドを削除する方法はありますか?そうでない場合は、クリックした要素から必要なデータを抽出して、要素を「手動で」複製します。
これが私がしていることの簡単な例です