2012-04-04 3 views
1

私はArrayProxyで計算された配列を含むコントローラを持っています。私が期待される配列を取り戻すコマンドラインからハンドルバービューで計算されたEmber配列の各項目を反復処理する方法

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( 『母親』)」:

のCoffeeScriptで

、私のコントローラはそのように見えます。

今、私は私の文書でそのセットを表示したい、と私は母親のリストを反復処理したい:

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

これは動作しません、実際には完全に永遠にスピンして、アプリケーションがハングコンソールに何らかのエラーを出力することもありません。

各ハンドルバーの ".mother"をオフにしておくと、すべての親が正しく表示されます。しかし、それをborksに置く。

この計算された配列をどのように反復処理しますか?

答えて

0

あなたは、コントローラのmothers属性を指し、ParentMothersPoolビューで結合を定義する必要があります。

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

次にテンプレートで:

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

私はそれになります。その間、私は計算されたプロパティを反復する答えを見つけ出しました。まず、.cacheable()を追加することによって**プロパティ**をキャッシュする必要があります。これにより、アプリケーションが停止することがなくなります(ドキュメント、natch ...のどこにも記載されていません)。次に、プロパティがキャッシュ可能とマークされた後、プロパティが配列の各項目を監視する必要があるため、実際にプログラムした方法で機能しなくなります。 計算されたプロパティの固定構文は、 'mothers:(...)。property( "content。@ each")。cacheable()'です。これにより問題は解決され、ビューは正しく動作します。 –

+0

私の答えは別として、任意のコレクションやサブグループに対してカスタムビューを持たなければならないより典型的なパターンです。たくさんの3行のビューを積み重ね始めているような気がします。 –

+0

この返信では、囲みビューはこのスニペットに含まれるdivの後の名前であると仮定します。明らかに、「母親」の拘束力は、「各」スコープレベルの視点によって保持されるべきである。このdivを含むビューが必要です。 –

関連する問題