1

Ember-Data を使用してこれを機能させるために何時間も苦労しましたが、結果は得られなかったので、Ember-Model を試してみることにしました。まだ喜びはありません。

私は次のものを持っています:

App.Item = Ember.Model.extend({
   itemName: Ember.attr(),
});

App.Strat = Ember.Model.extend({
    stratName: Ember.attr(),
    items: Ember.hasMany('App.Item',{key: 'items', embedded: true});

App.Strat.adapter = Ember.FixtureAdapter.create();

App.Strat.FIXTURES =
[
  {id: 1, stratName: 's1', items: 
     [{id: 1, itemName: 'I1'}]},
  {id: 2, stratName: 's2', items:
     [{id: 2, itemName: 'I2'},
      {id: 3, itemName: 'l3'}]}
];

この時点まで、すべてがうまく機能しているように見えました。テンプレートを介してフィクスチャ データを表示できます。私がやりたいことは、ユーザーが追加のストラト レコードを追加できるようにすることです。画面に事前入力されたストラト レコードを表示し、ユーザーが変更を加えられるようにしてから、フィクスチャ データからロードされた 2 つのストラト レコードとともに保存します。私は次のことを試しました:

var dummyStrat =
  {id: 100, stratName: "s5", items: 
      [{id: 101, itemName: "I5", strategy: 100}]};

var newStrat = App.Strat.create (dummyStrat);
newStrat.save();

これにより、次のエラーが発生しました。

TypeError: this.get(key).toJSON は関数ではありません。

しかし、これを行ってもエラーはありません:

var dummyStrat = 
  {id: 100, stratName: "s5"};

var newStrat = App.Strat.create (dummyStrat);
newStrat.save();

私は何を間違っていますか?

4

1 に答える 1

0

create 呼び出しから strategy: 100 を削除するとどうなりますか? モデルの属性ではない変数を設定していないことを除いて、アプリにはほとんど同じコードがあります。

私の他の提案は、items キーの名前を stratItems に変更して、キーが計算された hasMany 属性と同じ名前にならないようにすることです。

于 2013-10-31T16:58:28.550 に答える