programing

부분 뷰를 바인딩하기 위해 ko.applyBindings를 호출할 수 있습니까?

telebox 2023. 3. 13. 20:21
반응형

부분 뷰를 바인딩하기 위해 ko.applyBindings를 호출할 수 있습니까?

나는 녹아웃을 사용하고 있습니다.JS 및 메인 뷰 및 뷰 모델이 있습니다.별도의 하위 보기 모델이 바인딩되는 다른 보기가 있는 대화 상자(jQuery UI 대화 상자)를 팝업합니다.

대화 내용의 HTML은 AJAX를 사용하여 검색되므로 전화할 수 있습니다.ko.applyBindings요청이 완료되면 대화 상자 div 내의 ajax를 통해 로드된 HTML 부분에만 하위 뷰 모델을 바인딩합니다.

이것이 실제로 가능한가요?아니면 페이지를 처음 로드하고 호출할 때 모든 뷰와 뷰 모델을 로드해야 합니까?ko.applyBindings한 번?

ko.applyBindings는 루트로 사용하는 DOM 요소인두 번째 파라미터를 받아들입니다.

이를 통해 다음과 같은 작업을 수행할 수 있습니다.

<div id="one">
  <input data-bind="value: name" />
</div>

<div id="two">
  <input data-bind="value: name" />
</div>

<script type="text/javascript">
  var viewModelA = {
     name: ko.observable("Bob")
  };

  var viewModelB = {
     name: ko.observable("Ted")
  };

  ko.applyBindings(viewModelA, document.getElementById("one"));
  ko.applyBindings(viewModelB, document.getElementById("two"));
</script>

따라서 이 기술을 사용하여 대화상자에 로드하는 동적 콘텐츠에 viewModel을 바인딩할 수 있습니다.전반적으로, 당신은 단지 전화하지 않도록 조심하고 싶을 뿐이다.applyBindings여러 이벤트 핸들러가 연결되기 때문에 동일한 요소에 여러 번 사용됩니다.

Niemeyer의 답변이 질문에 대한 보다 정확한 답변이지만, 다음을 수행할 수도 있습니다.

<div>
  <input data-bind="value: VMA.name" />
</div>

<div>
  <input data-bind="value: VMB.name" />
</div>

<script type="text/javascript">
  var viewModels = {
     VMA: {name: ko.observable("Bob")},
     VMB: {name: ko.observable("Ted")}
  };

  ko.applyBindings(viewModels);
</script>

즉, DOM 요소를 지정할 필요가 없으며 다음과 같이 여러 모델을 동일한 요소에 바인딩할 수도 있습니다.

<div>
  <input data-bind="value: VMA.name() + ' and ' + VMB.name()" />
</div>

런타임에 커스텀 모델을 요소에 바인드할 수 있었습니다.코드는 http://jsfiddle.net/ZiglioNZ/tzD4T/457/ 입니다.

흥미로운 비트는 정의하지 않은 요소에 data-bind 속성을 적용한다는 것입니다.

    var handle = slider.slider().find(".ui-slider-handle").first();
    $(handle).attr("data-bind", "tooltip: viewModel.value");
    ko.applyBindings(viewModel.value, $(handle)[0]);

이 사진을 보시면with바인딩 및controlsDescendantBindings http://knockoutjs.com/documentation/custom-bindings-controlling-descendant-bindings.html

언급URL : https://stackoverflow.com/questions/7342814/can-you-call-ko-applybindings-to-bind-a-partial-view

반응형