knockout.js バインディングが子要素で評価されるのを止める方法 質問する

knockout.js バインディングが子要素で評価されるのを止める方法 質問する

knockout を使用すると、呼び出すと、ko.applyBinding(viewModel, "divId")バインドした要素 ("divId") の子要素まで再帰的にバインドされます。子ノードでこの評価を停止したいと思います。これを行う方法はありますか?

理由は…

ページ全体をナビゲーション ビュー モデルにバインドし、基本的なレイアウトと... ナビゲーションを処理します。さまざまなページで、特定の領域をナビゲーション ビュー モデルのプロパティではない別のビュー モデルにバインドします。現時点では、これを行うと、ナビゲーション ビュー モデルに必要なプロパティがないため、「バインディングを解析できません」というエラーが発生します。DOM をたどるバインディングを停止できれば、これらの項目を個別にバインドできます。

ベストアンサー1

これにはいくつかの方法があります。通常は、メイン ビュー モデルに複数の「サブ」ビュー モデルを追加し、with実際のビュー モデルを含むさまざまな領域でバインディングを使用して、それらにバインドします。

技術的には、あなたが求めていることは可能です。KO に子のバインディングを自身で処理するように指示するカスタム バインディングを作成できます。次のようになります。

ko.bindingHandlers.stopBindings = {
    init: function() {
        return { controlsDescendantBindings: true };
    }  
};

これを要素に配置すると、KO は子要素を無視します。その後、別のビュー モデルを使用して、この要素の子要素に対して ko.applyBindings を呼び出すことができます。

サンプル:http://jsfiddle.net/rniemeyer/tWJxh/

ただし、通常は、バインディングを使用して、メイン ビュー モデルの下に複数のビュー モデルを使用しますwith

おすすめ記事