2012-04-04 4 views
1

나는 ArrayProxy이고 계산 된 배열을 포함하는 컨트롤러를 가지고 있습니다. 이 잘 작동핸들 막대보기에서 계산 된 엠버 배열의 각 항목을 반복하는 방법

MyApp.parentController = Ember.ArrayProxy.create 
    content: [] 
    mothers: (-> 
    mothers = (person for person in @get("content") when person.sex == 0) 
).property("content") 
    fathers: (-> 
    fathers = (person for person in @get("content") when person.sex == 1) 
).property("content") 

, 나는 명령 줄에서 '("어머니") MyApp.parentController.get'를 요청할 때 내가 다시 예상되는 배열을 얻을 :과 같이 커피 스크립트에서

는, 내 컨트롤러 보인다 .

지금 내 문서에 해당 세트를 표시하려면, 그래서 나는 어머니의 목록을 반복 할 :

<div id="parent-mothers-pool"> 
    {{#each MyApp.parentController.mothers}} 
    {{#view MyApp.ParentView contentBinding="this"}}{{/view}} 
    {{/each}} 
</div> 

이 작동하지 않습니다, 사실 완전히 영원히 회전하고, 응용 프로그램을 중단 콘솔에 오류를 인쇄하지 않아도됩니다.

#each 핸들 바에서 ".mother"를 벗어나면 예상대로 모든 부모가 올바르게 표시됩니다. 그러나 그것을 borks에 두는 것.

이 계산 된 배열을 반복하는 방법은 무엇입니까?

답변

0

당신은 컨트롤러의 mothers 속성을 가리키는 상기 ParentMothersPool보기에서 바인딩을 정의해야합니다 :

MyApp.EnclosingView = Ember.View.extend 
    mothersBinding: 'MyApp.parentController.mothers' 

를 다음 템플릿에서 :

{{#each mothers}} 
    ... 
+1

내가 그로 볼 것이다. 그 동안, 나는 계산 된 프로퍼티를 반복하는 것에 대한 해답을 얻었습니다 : 먼저, 프로퍼티 **는 .cacheable()을 추가하여 캐시되어야합니다. 이렇게하면 응용 프로그램이 멈추는 것을 멈 춥니 다 (docs, natch ... 아무 곳에서도 언급되지 않습니다). 둘째, 속성을 캐시 가능으로 표시 한 후에 속성이 배열의 각 항목을 관찰해야하므로 사실 프로그래밍하지 못하게됩니다. 계산 된 속성의 고정 구문은 'mothers : (...). property ("content. @ each"). cacheable()'입니다. 이렇게하면 문제가 해결되고보기가 올바르게 작동합니다. –

+0

그래서, 내 대답은 제쳐두고, 당신이 가질 수있는 임의의 컬렉션 또는 하위 그룹에 대한 사용자 지정보기가 있어야하는보다 전형적인 패턴입니다? 많은 수의 세 줄보기를 쌓아 놓기 시작한 것 같습니다. –

+0

이 답장에서이 둘러보기에 포함 된 div 다음에 둘러보기가 이름으로 있다고 가정합니다. 분명히, '어머니'바인딩은 '각'범위 수준의 견해에 의해 보류되어야합니다. 이 div가 포함 된보기가 있어야합니다. –

관련 문제