2012-04-01 2 views
3
내가 항목의 중첩 된 순서없는 목록을 얻기 위해 이런 일을 할 수 있도록 사용

:재귀보기 엠버로 업그레이드 한 후 작동하지 않는 템플릿 0.9.6

자바 스크립트 :

App.Menu = Em.View.extend({ 

    controller: App.menuController.create({}), 

    tagName: 'ul', 

    templateName: 'Menu', 

    pageBinding: 'controller.page' 

}); 

핸들 바 :

<li> 
    {{page.menuTitle}} 
    {{#each page.childrenPages}} 
     {{view App.Menu pageBinding="this"}} 
    {{/each}} 
</li> 

index.html을 :

<script type="text/x-handlebars"> 
    {{view App.Menu}} 
</script> 

최신 Ember.js (0.9.6)로 업데이트 한 후 특정 항목 모음의 마지막 항목 만 표시됩니다 (<ul>에 하나의 <li>). 이전 버전의 Ember에서는 주어진 컬렉션의 모든 항목이 포함 된 중첩 된 <ul>/<li> 목록이 표시되었습니다.

나는 새로운 App.Menu 뷰 대신 {{#each}}를 통해 기존 뷰가 재사용되고 있다고 생각한다. 이전 동작과 비슷한 것을 얻을 수있는 방법에 대한 아이디어 ?

답변

2

나는 문제가 컨트롤러 속성 App.Menu의 모든 구체적인 예를 들어 동일 App.Menu 클래스 내부의 controller을 만들어, Understanding Ember.Object를 볼 수 있다고 생각합니다.

나는 뷰 클래스에서 특정 컨트롤러에 바인딩 이동했습니다 그것은 http://jsfiddle.net/pangratz666/DgG9P/

핸들 바 참조 작동합니다

<script type="text/x-handlebars" data-template-name="Menu" > 
    <li> 
     {{page.menuTitle}} 
     {{#each page.childrenPages}} 
      {{view App.Menu pageBinding="this"}} 
     {{/each}} 
    </li> 
</script> 

<script type="text/x-handlebars"> 
    {{view App.Menu pageBinding="App.mainPage" }} 
</script> 

자바 스크립트을 :

App = Ember.Application.create({}); 

App.Menu = Em.View.extend({ 
    tagName: 'ul', 
    templateName: 'Menu' 
}); 

App.mainPage = Ember.Object.create({ 
    menuTitle: 'main page', 
    childrenPages: [Ember.Object.create({ 
     menuTitle: 'subtitle 1', 
     childrenPages: [Ember.Object.create({ 
      menuTitle: 'subtitle 1 - child 1' 
     })] 
    }), Ember.Object.create({ 
     menuTitle: 'subtitle 2', 
     childrenPages: [Ember.Object.create({ 
      menuTitle: 'subtitle 2 - child 1' 
     })] 
    })] 
});​ 
+0

그래, 네 말이 맞아. 감사! 나는 MenuController의 인스턴스 하나만을 원했을 때, 전체 사이트에 대한 메뉴를 빌드하는 데 필요한 모든 페이지 정보를 가져 와서 여러 쿼리를 만드는 오버 헤드를 피했습니다. 무슨 일이 일어나고 있는지 이해할 수있게 해준 후에, 나는 각 페이지의 인스턴스를 보유하고있는 뷰에 루프 변수를 추가하여 컨트롤러를 put 한 상태로 둘 수있었습니다 (여전히 한 번만 인스턴스화되고 모든 뷰가 공유합니다). 반복한다. – mike

+1

누구나 rc1에서이 작업을 할 수 있습니까? – RyanJM

+0

@ kingpin2k 같은 질문이 있지만 ember.js에서 작동하지 않습니다. 1.2.0 – magicshui