特定のDOM要素からバインドされたViewModel JavaScriptオブジェクトを取得することは可能ですか?
ko.applyBindings( gLoginViewModel, document.getElementById("login-form") );
ko.applyBindings( gLoginViewModel, document.getElementById("register-form") );
そしてどこか-むしろ無関係なコードで-このようなもの:
var viewModel = ko.getViewModel( formElement );
viewModel.someObservable( someData ); // observable available in all ViewModels
次のようなことができればさらに良いでしょう:
var viewModel = ko.getViewModel( someChildElement );
前もって感謝します!
Knockoutには、ここで役立つ2つの ユーティリティメソッド があります。
ko.dataFor
は、要素がバインドされているViewModelを返します。ko.contextFor
は、現在の要素の「バインディングコンテキスト」を返します。このメソッドから返されるオブジェクトは、次のようなものを返します。
{
$data: ...,
$parents,
$root
}
あなたの質問を理解したら、おそらくko.dataFor
ここに。 これは簡単な例ですdataFor
を使用しています。