1

オブジェクトの階層を持つ Knockout アプリケーションがあります。HTML タグ内のオブジェクトの深いレベルにアクセスしたい場合は、次のようなものを使用します。

data-bind="text: property1().property2().property3()"

純粋な Javascript で同じターゲットをサブスクライブしたい。つまり、現在バインドされているオブジェクトのプロパティ 3 が変更されるたびに、またはプロパティ 3 の下の階層が変更されるたびに関数を実行します。言い換えれば、私は次のようなことをしたいと思います:

myviewmodel.deepSubscribe("property1().property2().property3()", function() { .... });

ノックアウトでこれを行うにはどうすればよいですか?

4

3 に答える 3

5

computedノックアウトの機能を利用したほうがいいです。

次のことを宣言できます。

var computedProp = ko.computed(function(){
    return property1().property2().property3();
}

次に、次のようにバインドできます。

data-bind="text: computedProp"

そして、次のようにサブスクライブできます。

computedProp.subscribe(function() { .... });
于 2013-11-06T12:26:28.387 に答える
2

このために、私はここにノックアウトリアクターを書きました:

https://github.com/ZiadJ/knockoutjs-reactor

階層モデルに深くサブスクライブするのに優れており、多くの柔軟性を提供します。

于 2014-05-17T11:55:40.587 に答える