0

特定の 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 要素が欠落しているという問題があります。

4

1 に答える 1

0

やってみました?:

$('#firstPage').undatabind();

アップデート:

申し訳ありませんが、@NukeFace が指摘しているように、このメソッドは私が使用する Knockout Programmatic プラグインの一部です。

乾杯。

于 2012-12-10T11:02:03.410 に答える