私は 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>