2012-12-23 123 views
69

可以從給定的DOM元素獲取綁定的ViewModel JavaScript對象嗎?knockout.js - 從DOM元素獲取ViewModel

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); 

提前感謝!

回答

118

淘汰賽有兩個utility methods這可能有幫助。

  • ko.dataFor將返回元素綁定到的ViewModel。
  • ko.contextFor返回當前元素的「綁定上下文」。你從這個方法返回的對象將返回類似:

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

所以,如果我理解你的問題,你也許可以使用ko.dataFor這裏。 Here's a simple example使用dataFor

+9

那麼他們在這裏記錄:http://knockoutjs.com/documentation/unobtrusive-event-handling.html :) –

+1

@RPNiemeyer:啊,哎呀,謝謝你的鏈接。 –

+0

完美! :) 謝謝 –