2012-11-01 3 views
0

간단한 질문 : ViewModel에서 반복 할 값의 배열을 가지고 있는데, '작업'이라고 부르 자. 각 작업은 {type: myType, name: myName}입니다.
작업 유형간에 <hr />을 입력하여 구분하려고합니다. 나는 다음을 시도했지만 뭔가가 내 구문을 망쳐 생각 : 모든 것이 잘 작동 <!-- ko if -->없이Knockout.js foreach에서 두 개의 인덱스를 비교하는 방법은 무엇입니까?

<!-- ko foreach: jobs --> 
    <div class="job" data-bind="text: name"></div> 
    <!-- ko if: ($index() > 0 && $parent[$index()].type != $parent[$index() - 1].type) --> 
    <hr /> 
    <!-- /ko --> 
<!-- /ko --> 

을하고, 나는 좋은 목록을 얻을.

Uncaught Error: Unable to parse bindings.
Message: TypeError: Cannot read property 'type' of undefined;
Bindings value: if: ($index() > 0 && $parent[$index()].type != $parent[$index() - 1].type)

기록을 위해 : (필자는 첫 번째 유형의 6 일이 있기 때문에, 잘못)이 if
,이 오류 다음에, hr 다음 인쇄 처음 2 작업의 이름을 받고 있어요 , 3 가지 유형의 18 가지 일자리가 있습니다.
내가 뭘 잘못하고 있니?

+0

가능한 경우 뷰 모델의 예제 템플릿과 같은 'if'논리를 사용하는 것이 좋습니다. 뷰 템플릿은 이상적으로 흐름을 제어하지 않고 구조 및 데이터 바인딩 특성을 보유해야합니다. –

+0

나는 네가하는 말을 듣지 만, 그렇게 쉬운 것이었다. 어떤 접근 방식을 권하고 싶습니까? 계산 된 필드? –

답변

2

여기에서 $parentjobs 속성을 포함하는 개체입니다. 따라서 $parent.jobs에 색인을 생성해야합니다.

+0

이것은 관찰 배열이 아니라 단순한 배열입니다. 코드를 시도하고 TypeError : object가 함수가 아닙니다. –

+0

오, 아니야, 알았다. 나는 내가 어디로 잘못 갔는지 안다. 나는 또한'$ data'가 관측 가능하다고 잘못 생각했습니다. 그것은 실제 객체 자체입니다. –

+0

예! 그것으로 해결되었습니다. 너 다 남자 야! –

관련 문제