0

私は今、このコードの部分に非常に悪い@苦労しています。ルートで次のように指定する動的セグメントがあります。

App.Router.map(function(){
    this.resource('set', {path:'/set/:set_id'}); 
});

それに応じて、

 App.SetRoute = Ember.Route.extend({
      model: function(params){
            return this.get('store').find('gift',params.set_id); // each set has a bunch of gifts that belong to it and are identified by set_id which acts as the primary key .
            }
    });

 App.SetController = Ember.ArrayController.extend(); // array controller since I expect an array of gifts to be returned when visiting this route

これを実行すると、次のような明白なエラーが表示されます。

Object[Object Object] には addArrayObserver メソッドがありません

私のデータは、次のようなフィクスチャを介してロードされています:

App.Set.FIXTURES = [
        {
                id: 1,
                name: 'EmberJS'
        },
        {
                id:2,
                name: 'Routing'
        },
     ... ]

App.Gift.FIXTURES = [ { id : 1, gift_name: 'ランダムな名前', set_id: 1 },

    {
            id: 2,
            gift_name: 'name 2',
            set_id: 1
    },
   ..]

Gift モデルは次のように拡張されます。

App.Card = DS.Model.extend({
        gift_name: DS.attr('string'),   
        set_id : DS.belongsTo('App.Set')
});

ルートは、ハンドルバー内の #linkTo ヘルパー タグによって読み込まれ、set linkTo をクリックすると、次のように期待どおりにレンダリングされます。

/set/1 または /set/2

ただし、データはロードされません。セットに属する特定のギフトデータをロードしたいのですが、次のように表示され続けます。

オブジェクト [object Object] にはメソッド 'addArrayObserver' エラーがありません。

どこが間違っているのか、ここで何が欠けているのでしょうか?

4

2 に答える 2

1

Set はシングルトンで、ギフトと 1 対多の関係にあります。

SetController は ObjectController 型である必要があり、データは次のようになります。

App.Set.FIXTURES = {
id: 1,
name: 'some name',
gifts: [{
id: 1,
name: 'some name'
},{
id: 2,
name: 'some name'
}]
};
于 2013-09-10T01:38:14.493 に答える
1

Ember.ArrayControllerこれは、あなたの場合 にサブクラス化するコントローラーがあるが、App.SetControllerコントローラーの content プロパティに設定されたデータが配列ではなくオブジェクトである場合に発生します。

this.get('store').find('gift',params.set_id);それがこの問題を引き起こしていると思います。findの値を計算する最初のオブジェクトを返すためですparams.set_id

Ember.ArrayControllerコンテンツ プロパティの配列とEmber.ObjectControllerオブジェクトが必要です。Ember.ObjectControllerあなたの場合、1 つのオブジェクトを処理しているため、を使用することをお勧めします。

役立つことを願っています

于 2013-09-09T01:34:49.153 に答える