0

私は Ember 1.2、Handlebar 1.12、および EmberModel (EmberData ではありません) を使用しています。

私のアプリケーションでは、以下に示すような単純なモデルを使用して、ルート マップに共通の親子関係があります。

App.Router.map(function () {
    this.resource('strats', {path: "/"}, function() {
        this.route('strat', {path: "/strat/:strat_id"});
    });
});

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

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

多くの例のように、左側に strat.id を (Handlebar #each ヘルパーを使用して) 表示し、選択した「strat」の詳細 (すなわち、strat.id、strat.stratName、strat.stratDetail) を右側。新しい「ストラト」を追加するには、以下に示すアクション関数「newStrat」に接続されたボタンを使用します。

新しい子を追加すると、すでに別の子が存在する場合、すべてが正しく表示されます (たとえば、2 番目以降の子を追加するとすべて正常に動作します)。しかし、最初の子を追加する場合、strat.Id は左側に表示されませんが、strat.id、strat.stratName、および strat.stratDetail は右側に表示されます。次に this.get('model').save() を呼び出してブラウザの更新ボタンを押すと、左側と右側の両方で期待どおりに表示されます (サーバーに送信されたデータの要求とサーバー保存されたすべてのデータを返信します)。

この動作の原因は何ですか? とにかくそれを修正することはありますか?

データがない場合、findAll() への応答として、私のサーバーは {"strats":" "} を返します。データなしのシナリオで私が返すものには、問題を起こす何かがありますか?

コントローラ

App.StratsController = Ember.ArrayController.extend({
actions: {
    newStrat: function() {

    var nwStrat = 
        {
           id: "newId",
           stratName: "untitled",
           stratDetail: "someDetail"
        };

        var newStrat = App.Strat.create (nwStrat);
        this.get('model').pushObject(newStrat);

        this.transitionToRoute ('strats.strat', newStrat);
        }
}});

左側を表示するテンプレートのコード スニペット

  <div class=\"list-group\" style=\"margin-top: 10px\">
  {{#each controller}}                          
    {{#linkTo \"strats.strat\" this class=\"list-group-item\"}}
      {{id}}
    {{/linkTo}}       
  {{/each}}
  </div>
4

0 に答える 0