2012-12-23 61 views
69

バインドされたViewModel JavaScriptオブジェクトを特定のDOM要素から取得することは可能ですか?knockout.js - DOM要素からViewModelを取得

ko.applyBindings(gLoginViewModel, document.getElementById("login-form")); 
ko.applyBindings(gLoginViewModel, document.getElementById("register-form")); 

とどこかに - むしろ無関係なコードで - このような何か:事前に

var viewModel = ko.getViewModel(someChildElement); 

ありがとう:

var viewModel = ko.getViewModel(formElement); 
viewModel.someObservable(someData); // observable available in all ViewModels 

私のような何かを行うことができれば、それも良いだろう!

答えて

118

ノックアウトには、ここで役立つ2つのutility methodsがあります。

  • ko.dataForは、要素がバインドされているViewModelを返します。
  • ko.contextForは、現在の要素の「バインディングコンテキスト」を返します。私はあなたの質問を理解するのであれば、あなたはおそらくここko.dataForを使用することができます

    { 
        $data: ..., 
        $parents, 
        $root 
    } 
    

:あなたは、このメソッドから戻って取得するには、オブジェクトのようなものを返します。 Here's a simple exampleを使用。dataFor

+9

よく分かっています:http://knockoutjs.com/documentation/unobtrusive-event-handling.html :) –

+1

@RPNiemeyer:Ahh、whoops、リンクありがとう。 –

+0

パーフェクト! :)ありがとう –

関連する問題