1

私はカスタム バインディングを行っています。私の最初のバージョンでは、データ バインドされたプロパティを監視可能にする必要がありましたが、バインディングのユーザーはおそらく標準プロパティを使用する可能性があることをリリースしました (値が変更されたときに通知されることに興味がない場合)。かわった)。

これをサポートするために、値バインディングがどのように実装されているかを調べました。

ko.jsonExpressionRewriting.writeValueToProperty

オブザーバブルまたは標準プロパティの両方に値を書き込む。

これは内部の ko 名前空間であるため、バインディングから使用できません。このメソッドをどのように呼び出す必要がありますか?

編集: これを修正するためにgithubにプルリクエストがあり ます https://github.com/SteveSanderson/knockout/pull/806

4

1 に答える 1

4

Knockoutは、結果のオブジェクトに関数を配置します。この関数をallBindingsAccessor使用して、観測不可能なモデル値に書き込むことができます。

バインディングが呼び出された場合myBinding、コードは次のようになります。

        if (ko.isObservable(modelValue)) {
            modelValue(valueToWrite);
        }                
        else { //non-observable
           allBindingsAccessor()._ko_property_writers.myBinding(valueToWrite);   
        } 
于 2012-08-31T17:03:29.417 に答える