2013-03-13 37 views
6

tôi muốn nhắm mục tiêu viewmodel loại trực tiếp của tôi để phần nhất định của các dom như như sau:Loại trừ các phần tử DOM khỏi loại bỏ áp dụng ràng buộc?

ko.applyBindings(MyViewModel,$('#Target')[0]); 

Tuy nhiên tôi không muốn nó để áp dụng cho tất cả các DOMs dưới nó. Lý do cho điều này là toàn bộ điều SPA không hoạt động rất tốt - không thể theo kịp với chế độ xem có kích thước jumbo mà kết quả từ việc bao gồm mọi tương tác tiềm năng vào một đối tượng khổng lồ. Do đó, trang bao gồm nhiều lượt xem một phần. Tôi muốn mỗi partials để khởi tạo ViewModel của riêng mình và cung cấp giao diện cho phụ huynh tương tác với.

Một số mẫu dom

<div id="Target"> 
    <!--Everything here should be included except--> 
    <div data-bind="DoNotBindBelowThis:true"> 
      <!--Everything here should NOT be included by the first binding, 
       I will specifically fill in the binding with targetted 
       ApplyBind eg. ko.applyBindings(MyOtherViewModel, $('#MyOtherTarget')[0]) 
       to fill the gaps--> 
      <div id="MyOtherTarget"> 
      </div> 
    </div> 
</div> 

Một lần nữa làm thế nào tôi có thể loại trừ một cây dom toàn bộ dưới div tagged with DoNotBindBelowThis từ applyBindings?

Trả lời

11

Hãy nhìn vào các bài đăng blog ở đây: http://www.knockmeout.net/2012/05/quick-tip-skip-binding.html

Về cơ bản, bạn có thể tạo liên kết giống như một tùy chỉnh:

ko.bindingHandlers.DoNotBindBelowThis = { 
    init: function() { 
     return { controlsDescendantBindings: true }; 
    } 
}; 
+0

Tôi hoàn toàn không nhận được nó, không nên chúng tôi trở controlsDescendantBindings sai sự thật, thay vì đúng? – Alwyn

+0

'controlsDescendantBindings: true' nói với KO rằng chúng ta (ràng buộc này) sẽ xử lý việc áp dụng các ràng buộc cho con em chúng ta. Trong mẫu ràng buộc ở trên đó là tất cả những gì được thực hiện, vì vậy các em được để lại một mình. Sau đó, bạn có thể quay lại và gọi 'ko.applyBindings' đến một phần tử DOM cụ thể nằm bên trong phần tử có liên kết này. –

+0

Đúng rồi. Cảm ơn bạn. – Alwyn

Các vấn đề liên quan