如何在 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的主要内容,如果未能解决你的问题,请参考以下文章

如何在 ember-cli-mirage 中创建对象?

如何在Vue.js中创建自定义链接组件?

当我在 ember 数据中创建或更新 (belongs_to) 模型和 (has_many) 模型中的自动同步更新列时

控制器中的 Ember 火灾过滤器数据

在 ember 中,如何将视图数据从拖放中传递?

如何在 Vue.js 中创建自定义链接组件?