2013-06-12 4 views
68

가 어떻게 바인딩/중첩 된 녹아웃 foreach 문에서 $ 부모 $ 부모를 참조 할 수 있습니다 간결 업데이트?

예 -

<!-- 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 --> 

원래

혼란 질문에 대한 미안하지만 난 (아래처럼) 현재 컨텍스트의 값에 대해 확인하기 위해 두 번째 수준의 부모의 값에 도달하려고에 $ 부모의 $ 부모의 값과 일치하는 경우에만 스팬을 표시합니다. (우!)

<!-- 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 --> 

이 작업을 더 쉽게 수행 할 수 있습니다. 하지만 읽을 수 없거나 잘못하고 있습니다. :)

<!-- 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 --> 

어떤 도움을 주시면 감사하겠습니다.

+0

, 무엇을 작동하지 않는 등 많은 유용한 특성을 제공? 문제는 무엇입니까 :'$ parent. $ parent'의 구문인가요? 아니면'foreach'와'if'를 합칠 수 없기 때문에'span'을 사용해야합니까? – nemesv

답변

118

$parents 배열을 사용하면 조부모는 $parents[1]이됩니다. 또한 예제의 grandParent 개체가 최상위 부모 인 경우 $root을 사용할 수도 있습니다. docs에서

:

$ 부모가

이 부모 뷰 모델의 모든 나타내는 배열입니다 :

$ 부모를 [0] 부모에서보기 모델입니다 context (즉, $ parent와 같은 )

$ parents [1]은 grandp의 뷰 모델입니다. 상황이 arent

$ 부모님 [2] 등보기 위대한 - 조부모 컨텍스트

에서 모델 ... 그리고입니다.

이 루트 컨텍스트의 주요 뷰 모델 객체, 즉 최상위 부모 컨텍스트입니다 $ 루트. 일반적으로 ko.applyBindings에 전달 된 개체입니다. 이는 $ parents [$ parents.length - 1]과 같습니다.

+0

어떤 이유로'$ parent. $ parent'가 나에게 효과적이지 못했지만,이 솔루션은 잘 작동했지만 너무 짧습니다! – PeterM

3

$parentContext.$parent을 사용할 수 있습니다.

$parentContext 은 ($data, $parent, $index는, ...)

나는 당신의 질문을 이해하지
관련 문제