子路径中属性显示不正确

时间:2014-01-06 18:13:37

标签: ember.js ember-model

我正在使用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 helper),并在选定的'strat中显示详细信息(即strat.id,strat.stratName和strat.stratDetail) ' 在右侧。要添加一个新的'strat',我使用一个连接到动作函数“newStrat”的按钮,如下所示。

添加新孩子时,当已经存在另一个孩子时,一切都正确显示(例如,添加第二个和后续孩子时一切正常)。但是如果我正在添加第一个子节点,则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>

0 个答案:

没有答案