knockout.js-DOM 요소에서 ViewModel 가져 오기


83

주어진 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 );

답변:


138

녹아웃에는 여기에 도움이 될 수있는 두 가지 유틸리티 방법 이 있습니다.

  • ko.dataFor 요소가 바인딩 된 ViewModel을 반환합니다.
  • ko.contextFor현재 요소의 "바인딩 컨텍스트"를 반환합니다. 이 메서드에서 반환하는 객체는 다음과 같은 것을 반환합니다.

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

따라서 귀하의 질문을 이해하면 ko.dataFor여기에서 사용할 수 있습니다. 다음은 간단한 예제 를 사용 dataFor.


13
: 그런데 그들은 여기에 설명되어 있습니다 knockoutjs.com/documentation/unobtrusive-event-handling.html :
RP Niemeyer에
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.