0

私はviewModelを持っています

var viewModel = {
    amount: ko.observable(1),
    rate: ko.observable(2),
    rate222: ko.observable(2)
};


<input data-bind="value: amount" />
<input data-bind="value: rate" />

rate222 がこのドキュメントにバインドされていないことをどのように確認できますか?

  • 複数ページの検証、存在するドキュメントで宣言するために必要です!

よろしくお願いします


更新:

これはこの問題を解決しません jsfiddle.net/x26sS/14 バインド値 "rate222" は DOM にありませんが、ノックアウトはそうは考えません: "show,rate12312"。

4

1 に答える 1

0

Knockout には、要素がすぐにバインドされていることを具体的に知る優れた方法はありません。

bound「バインドされていない」プロパティを探すときに使用できるオブザーバブルまたは計算にフラグを追加するカスタム バインディングを作成するのは非常に簡単です。

バインディングは次のようになります。

ko.bindingHandlers.track = {
    init: function(element, valueAccessor) {
       var observable = valueAccessor();
       if (ko.isObservable(observable)) {
           observable.bound = true;  
       }

       //clear the flag if this element is removed
       ko.utils.domNodeDisposal.addDisposeCallback(element, function() {
            var observable = valueAccessor();
            if (ko.isObservable(observable)) {
                observable.bound = false;     
            }     
       });           
    }
};

値バインディングをラップして、この機能を追加することもできます。

要素でこのバインディングを使用し、ビュー モデル (サンプルのトップレベルのみ) をループしてバインドされていないプロパティを見つける関数を提供するサンプルを次に示します。

http://jsfiddle.net/rniemeyer/x26sS/

于 2012-10-10T16:45:15.727 に答える