如何在 Ember Data 1.13.7 中创建和保存新模型并更新 UI
Posted
技术标签:
【中文标题】如何在 Ember Data 1.13.7 中创建和保存新模型并更新 UI【英文标题】:How to create and save a new model in Ember Data 1.13.7 and update the UI 【发布时间】:2015-10-23 06:38:34 【问题描述】:我正在使用 Ember 1.13.5 和 Ember Data 1.13.7 以及默认的 JSONAPIAdapter/Serializer,我在保存新模型时遇到问题。
我的路线如下所示:
import Ember from 'ember';
export default Ember.Route.extend(
model: function(params)
return Ember.RSVP.hash(
auditLog: this.store.query('log', filter: object: 'IsoApplication', object_id: params.id),
);
,
);
这会成功返回控制器的“auditLog”键中的“log”模型集合,例如this.get('model.auditLog').
在控制器中,我创建了一个新的“日志”模型并成功保存,如下所示:
self = this;
var log = this.store.createRecord('log',
logLevelId: 2
logTypeId: 2
object: 'IsoApplication',
objectId: 23
message: 'A message',
logData: '',
);
log.save().then(function(log)
self.get('model.auditLog').pushObject(log);
);
我用这条线:
self.get('model.auditLog').pushObject(log);
更新模型以便我的新日志条目显示在 UI 中,但我收到以下错误:
TypeError: internalModel.getRecord is not a function
“save”回调中的“log”参数是“InternalModel”类型。我被引导相信 InternalModels 仅由 Ember Data 核心代码使用,因此推测“保存”回调应该返回一个 DS.Model 实例。这里有什么问题吗?
另外,我是否通过使用“pushObject”来更新“log”模型的“model.auditLog”集合以使用新添加的模型更新 UI,或者它应该是一个自动过程? /p>
任何人都可以提供任何帮助,我们将不胜感激。
谢谢。
【问题讨论】:
【参考方案1】:好的,我在这里找到了解决这个问题的方法:
https://github.com/emberjs/data/issues/3313
帮助我的具体帖子是:
var self = this;
var usersArray = [];
store.find('user', params).then(function(users)
usersArray.addObjects(users);
usersArray.addObject(self.store.createRecord('user' ));
pushObject() 函数不能再用于 Ember Data 19+ 版本。
【讨论】:
以上是关于如何在 Ember Data 1.13.7 中创建和保存新模型并更新 UI的主要内容,如果未能解决你的问题,请参考以下文章