2013-06-12 34 views
68

Cập nhật cho ngắn gọn

Làm thế nào tôi có thể tham khảo $ cha mẹ $ của cha mẹ trong foreach Knockout lồng nhau/với bindings?

Ví dụ -

<!-- ko foreach: grandParent --> 
     <tr> 
      <!-- ko foreach: $parent.parents --> // <-- Doesn't work 
       <!-- ko foreach: children --> 
        <td data-bind="if: favToy().name == $parent.$parent.favToy().name"> 
         <span data-bind="text: favToy().name"></span> 
        </td> 
       <!-- /ko --> 
      <!-- /ko --> 
     </tr> 
    <!-- /ko --> 

gốc

Xin lỗi cho câu hỏi khó hiểu nhưng tôi đang cố gắng để đạt được giá trị một mức độ cha mẹ thứ hai để kiểm tra chống lại một giá trị trong bối cảnh hiện nay (như bên dưới) để chỉ hiển thị một khoảng thời gian nếu nó khớp với giá trị của $ parent's $ parent (ugh!)

<!-- ko foreach: grandParent --> 
     <tr> 
      <!-- ko foreach: $parent.parents --> 
       <!-- ko foreach: children --> 
        <td data-bind="if: favToy().name == $parent.$parent.favToy().name"> 
         <span data-bind="text: favToy().name"></span> 
        </td> 
       <!-- /ko --> 
      <!-- /ko --> 
     </tr> 
    <!-- /ko --> 

Sẽ dễ dàng hơn khi thực hiện điều này ay nhưng từ những gì tôi đã đọc điều này là không thể hoặc tôi đang làm điều đó sai :)

<!-- ko foreach: grandParent --> 
     <tr> 
      <!-- ko foreach: $parent.parents --> 
       <!-- ko foreach: children ? favToy().name == $parent.$parent.favToy().name --> 
        <td data-bind="text: favToy().name"></td> 
       <!-- /ko --> 
      <!-- /ko --> 
     </tr> 
    <!-- /ko --> 

Bất kỳ trợ giúp nào sẽ được đánh giá cao.

+0

Tôi không hiểu câu hỏi của bạn, những gì không làm việc? Vấn đề của bạn là gì: cú pháp của '$ parent. $ Parent' hoặc bạn phải dùng' span' vì bạn không thể hợp nhất 'foreach' và' if'? – nemesv

Trả lời

118

Sử dụng mảng $parents, ông bà sẽ là $parents[1]. Bạn cũng có thể sử dụng $root nếu đối tượng grandParent trong ví dụ của bạn là cha mẹ trên cùng.

Từ docs:

$ cha mẹ

Đây là một mảng đại diện cho tất cả các mô hình nhìn mẹ:

$ cha mẹ [0] là mô hình nhìn từ phụ huynh ngữ cảnh (nghĩa là, là giống như $ parent)

$ parent [1] là mô hình xem từ grandp ngữ cảnh arent

$ cha mẹ [2] là mô hình chế độ xem từ ngữ cảnh tuyệt vời của ông bà

... v.v.

$ root

Đây là đối tượng xem mô hình chính trong bối cảnh gốc, nghĩa là, bối cảnh cha mẹ topmost . Đó thường là đối tượng được chuyển đến ko.applyBindings. Nó tương đương với $ cha mẹ [$ parents.length - 1].

+0

Vì lý do nào đó '$ parent. $ Parent' không làm việc cho tôi, giải pháp này tuy nhiên hoạt động tốt, và nó ngắn hơn! – PeterM

3

Bạn có thể sử dụng $parentContext.$parent.

$parentContext cung cấp nhiều đặc tính hữu ích như ($data, $parent, $index ...)

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