8

私は、trek.github.comからemberjs学習しています。そのチュートリアルでは、との両方Em.ObjectControllerを使用しEm.ArrayControllerました。そしてありますEm.Controller

Em.ObjectControllerそれらをいつ使用するか混乱しています。単一のオブジェクト用でEm.ArrayControllerあり、配列Em.Controller用であり、ApplicationController専用であると思います。

いつどちらを使うかについての祝福されたルールはありますか?

4

2 に答える 2

13

通常、コントローラーがアイテムのリストを表す場合は を使用しEmber.ArrayController、コントローラーが単一のアイテムを表す場合は を使用しEmber.ObjectControllerます。次のようなもの:

MyApp.ContactsController = Ember.ArrayController.extend({
    content: [],
    selectedContact: null
});

MyApp.SelectedContactController = Ember.ObjectController.extend({
    contentBinding: 'contactsController.selectedContact',
    contactsController: null
});

次に、Ember.Router(それらを使用する場合)で、connectOutlets関数内で2つを接続します:

connectOutlets: function(router) {
    router.get('selectedContactController').connectControllers('contacts');
}

編集:私は一度も使用したことがありませんEmber.Controller。ソース コードを見ると、他の 2 つのコントローラーに適合しないカスタム コントローラーを作成する場合に、これを使用することができます。

于 2012-09-26T10:09:53.777 に答える
0

ルートからモデルに依存するのが原則です。

モデルが配列の場合、ArrayController を使用する必要があります。将来、ソートやフィルタリングを簡単に実装できるようになります。ArrayController は通常 ObjectController を接続しています。

モデルが Ember オブジェクトのインスタンスである場合は、ObjectController を使用する必要があります。たとえば、ember データを使用しているときに発生します。Objectcontroller を使用すると、モデル プロパティに直接アクセスできます。model.property毎回書く必要はありません。

App.ApplicationRoute = Ember.Route.extend({
    model: function() {
        return Ember.Object.create({name: 'Mathew'});
    }
});

My name is {{name}}

最後に、モデルを持っていない場合は、 just を使用する理想的な状況がありますEmber.Controller。ObjectController としてモデル プロパティに直接アクセスすることはできません。

于 2014-11-12T21:29:40.497 に答える