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”,我使用了一个连接到动作函数“newStrat”的按钮,如下所示。

添加新孩子时,如果已经有另一个孩子在场,一切都会正确显示(例如,添加第二个和后续孩子时一切正常)。但是如果我要添加第一个孩子,strat.Id 不会显示在左侧,但 str.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