特定の div のすべての子要素からすべてのバインディング (ko.cleanNode) を削除したいと考えています。初心者の質問に違いありませんが、KnockoutJS ですべての DOM 要素のバインディングを削除しながら、jQuery を使用してすべての子、孫、ひ孫などをループする方法がわかりません。
DOM から要素を削除したくありません。これは単一ページのアプリケーションであるため、要素は埋め込みリソースとして事前に読み込まれ、再度ページにアクセスしてもクライアントに再送信されません。クライアントがアプリケーションのその部分に再度アクセスした場合は、関数に必要な要素を再バインドさせますが、これは現在正常に機能しています。
現在のセットアップ:
<html>
<head>
//loading all resources
</head>
<body>
//load first element using some obscure setup
<div id="firsPage" data-role="page">
<div data-role="header">@Global.header</div>
<div data-role="fieldcontain">
<label for="firstInput" />
<input id="firstInput some other stuff />
</div>
<div data-role="datebox <!-- some settings --> >
//creates table using jQuery mobile (lots of (great-)(grand-)children)
</div>
<div data-role="fieldcontain">
<div id="secondInput">
<div class="checklist">
<ul>
<li />
<li />
</ul>
</div>
</div>
</div>
</div>
//Here the whole thing starts again
<div id="secondPage" data-role="page">
<!-- repeat above innerHTML in your mind ;) -->
</div>
//And here again! and again...
</body>
私が抱えている問題は、使用時に子のバインディングが「クリーンアップ」されないように見えることです
ko.cleanNode($('#firstPage')[0]);
または、要素を変数に取得してから、それを ko.cleanNode($element) にフォーマットする場合。
これを行う方法はありますか?かなりの数時間それを見つめていたので、あまりにも明白な方法を見落としている可能性があります...
ありがとう!
編集:以下は私が得ているエラーです: Uncaught Error: Unable to parse bindings. メッセージ: ReferenceError: someDate が定義されていません。バインディング値: 値: someDate
ただし、この ko.observable 'someDate' は、移動先の "data-role='page'" のバインディングとして存在しなくなりました。何らかの理由で、この値でバインドしたいと考え続けています。removeNode() を使用する場合、そのような問題はありませんが、ページ全体を含む DOM 要素が欠落しているという問題があります。