2

私が読んだ限りでは、現在、実験的なヘルパーEmber.jsを有効にしないと、単一のコントローラーの複数のインスタンスを持つという概念はサポートされていません。{{control}}

私が理解しているように、並べ替えられたリストを実行する Ember-y の方法は、並べ替えを実行するコントローラーでプロパティを定義することです。

App.BarController = Ember.ObjectController.extend({
  beers: (function() {
    return Ember.ArrayProxy.createWithMixins(Ember.SortableMixin, {
      sortProperties: ['rating'],
      content: this.get('content.beers')
    })
  }).property('content.beers')
});

私のアプリケーションでは、バーでタップされているすべてのビールを表示し、それらのビールを評価順に並べ替えたいと考えています。これはApp.BarController . しかし、2 つのバーを並べて表示したい場合、このモデルは突然壊れます。{{render}}内で使用することはできません{{each}}(render一度しか呼び出せないため)。次のシナリオも破綻します。データ バインディングが更新されて最後のバーのみが表示されるからです。

{{#each bar in controller}}
  {{#with bar as controller}}
    {{view BarView}}
  {{/with}}
{{/each}}

{{view}}最後に、評価によってデータを並べ替える機能が削除されるため、単に使用することはできません。ビューは、コントローラ、または並べ替えのためのその他のメカニズムにバインドする必要があります。

TL;DR:のインスタンスが与えられたApp.Bar場合、 を使用すると、並べ替えられたリストを簡単に作成できます。ただし、(比較のために) 2 つの を同時に表示したい場合、このメソッドは の 2 つのインスタンスを必要とするため、これは不可能です。同じクラスの 2 つのオブジェクトの内容に基づいて 2 つの並べ替えられたリストを取得する正しい方法は何ですか?hasManyApp.BeerEmber.SortableMixin App.BarApp.BarController

4

1 に答える 1

2

同じクラスの 2 つのオブジェクトの内容に基づいて 2 つの並べ替えられたリストを取得する正しい方法は何ですか?

通常、リストごとに 1 つのコントローラーに固執します。したがって、この場合は、言うApp.LeftBarControllerと、とをお勧めしApp.RightBarControllerます。

もちろん、共有コードはありますが、それは基本クラスまたは mixin にリファクタリングできます。

于 2013-03-26T07:25:20.553 に答える