2

こんにちは、ノックアウト 2 に問題があります。jQuery 経由でデータ バインドを追加しているため、遅延バインディングを行いたいです。

$("#button1").on ("click", function() {
        lateBinding = $("#lateBindingElem);
        if (lateBinding.length) {
           lateBinding.attr("data-bind", "text: obs");
        }
     }
});

遅延バインディングは、その場で生成される html です。

MyViewModelを呼び出すビューモデルが既に作成されています。

既存のビュー モデルに別の属性または別のオブザーバブル (計算済みまたは未計算可能) をその場で追加したいですか? どうすればいいですか?

4

1 に答える 1

-1

他の場所ですでに答えを見つけていることを願っています(7か月前:D)が、同様の問題の解決策を見つけたいと思ってこの質問に出くわしたので、同様に答えのようなものを与えることを試みるかもしれませんそれを調べている他の誰か。これにより、既にモデルにバインドしている要素のバインディングを操作することはできませんが、特定のポイントでバインドを一時停止し、新しく作成した要素を現在のビューモデルまたは別のビューモデルにバインドできます。

バインドを停止する方法に関する Ryan Niemeyersの優れた記事とそれに付随するjsfiddle の例に基づいて構築されたのは、新しい入力要素を dom に追加し、それらをさまざまなビューモデルにバインドする小さなデモです。

カスタムバインディングを使用して、ある時点で下向きのバインディングを停止する必要がある場合、dom のセクションをバインドできるのは 1 回だけです。

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

ラッパーに割り当てます

<div data-bind="stopBinding: true" id="addNewContentHere"></div>

新しい要素を挿入します

function addInput(){
   var data=$('<input type="input" data-bind="value: newInput" />');
   ko.applyBindings(MyViewModel, data[0]);
   $('#addNewContentHere').append(data);
};

それが何らかの役に立つことを願っています:)

于 2013-08-02T16:32:42.430 に答える