2012-04-01 7 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の中に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> 

JavaScriptの

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のインスタンスを1つだけ必要としました。何が起きているのかを理解してもらった後、コントローラにputを残すことができました。(それはまだ一度だけインスタンス化され、すべてのビューで共有されます)#各ページのインスタンスを保持するビューにループ変数を追加することによって繰り返す。 – mike

+1

誰でもrc1のためにこの仕事をすることができますか? – RyanJM

+0

@ kingpin2k同じ質問がありましたが、ember.jsで動作しません。1.2.0 – magicshui