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

Ale*_*hev 20 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();
Run Code Online (Sandbox Code Playgroud)

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

TypeError:internalModel.getRecord不是函数

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

this.get('messages.content').unshiftObject(message.internalModel);
Run Code Online (Sandbox Code Playgroud)

这部分有帮助.现在我有两个问题:

  • 我不相信使用私人余烬数据api是个好主意
  • 在将记录添加到模型并在屏幕上呈现之间,我有一个恼人的延迟.如果我不调用msg.save(); 记录未呈现.因此,据我所知,它等待我们从服务器响应,然后才会呈现它.但我需要相反的行为 - 我需要首先显示记录然后保存它(显示用户的保存状态),这样用户认为一切都过得非常快.

Mat*_*lič 8

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

var array = this.get('messages').toArray()
array.addObjects(this.get('messages'))
array.addObject(msg)
this.set('messages', array)
Run Code Online (Sandbox Code Playgroud)


rob*_*nex 7

在1.13之前:

this.get('content').pushObjects(messages);
Run Code Online (Sandbox Code Playgroud)

1.13之后:

messages.forEach(functio(message) {
  this.get('model.content').pushObject(message._internalModel);
}); 
Run Code Online (Sandbox Code Playgroud)