1. ホーム
  2. javascript

[解決済み] knockout.js - DOM要素からViewModelを取得する

2023-07-23 21:59:03

質問

与えられた 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 .