在1.13中将js对象动态添加到模型数组

时间:2015-06-22 21:33:13

标签: ember.js ember-data

我有以下代码:

var msg = this.store.createRecord({text:'first title', createdAt: "2015-06-22T20:06:06+03:00" })

this.get('model.content').pushObject(msg);

msg.save();

我们创造了新纪录。然后将其推入模型中进行显示。它在1.9版本中运行良好,但在将其升级到最新的1.13后,它会中断并显示此错误:

  

TypeError:internalModel.getRecord不是函数

经过一些研究后,我出现了这个解决方案

this.get('messages.content').unshiftObject(message.internalModel);

它有部分帮助。现在我有两个问题:

  • 我不相信使用私人余烬数据api是个好主意
  • 我在向模型添加记录与之间存在令人讨厌的延迟 在屏幕上呈现它。如果我不打电话,那就更好了 msg.save();记录未呈现。所以据我所知 等到我们从服务器得到响应然后再渲染它。 但我需要相反的行为 - 我需要首先显示记录 然后保存它(显示用户的保存状态),这样用户 认为一切都过得很快。

3 个答案:

答案 0 :(得分:8)

不使用私有API的一种可能解决方案是使用toArray()github issue):

var array = this.get('messages').toArray()
array.addObjects(this.get('messages'))
array.addObject(msg)
this.set('messages', array)

答案 1 :(得分:7)

在1.13之前:

this.get('content').pushObjects(messages);

1.13之后:

messages.forEach(functio(message) {
  this.get('model.content').pushObject(message._internalModel);
}); 

答案 2 :(得分:0)

我会将所有返回模型设置为数组,然后将数组添加到此数组

setPeople:function(){
    this.set('people',this.get('content').toArray())
}.observes('content')

然后,找到更多的人物模型,到阵列

getMoreUsers(){
      var self = this;
            this.set('offset', this.get('offset')+1);
            self.store.findAll('person').then(function(people){
             self.get('people').pushObjects(people.toArray());
            });