gpt4 book ai didi

ember.js - EmberJS 中的非持久属性

转载 作者:行者123 更新时间:2023-12-04 00:22:03 24 4
gpt4 key购买 nike

有谁知道为 Ember 指定的方法 model一个不持久化的属性?

基本上,我们正在加载一些与每个模型相关的元数据,并通过 RESTAdapter 将该数据发送到 Ember。模型内。此元数据可以在我们的应用程序中更改,但通过使用 AJAX 调用来完成。一旦调用成功,我希望能够通过将模型更改为 uncommitted 来更新模型中的此值,而无需 Ember 在此业务中插手。并做它对 transactions 所做的任何事情在幕后。

我也有这个元数据的问题,它不是来自 model 的数据。的数据库记录,由 RESTAdapter 传递回到服务器,它不期望这些值。我使用的是 RoR 后端,因此服务器在尝试批量分配根本不是属性的 protected 属性时出错。我知道我可以清理服务器上接收到的数据,但我希望客户端能够区分持久数据和辅助数据。

所以,对于最初的问题:是否有任何替代 Ember-Data 的 DS.attr('...')这将指定一个非持久性属性?

最佳答案

当这个PR get 合并后,可以将属性标记为 readOnly .但在那之前有一些解决方法,例如覆盖您的 addAttributes Adapter 中的方法并处理您的特殊属性,这是一个示例:

通过添加新选项 readOnly 定义您的模型:

App.MyModel = DS.Model.extend({
myMetaProperty: DS.attr('metaProperty', {readOnly: true})
});

然后在适配器上:
App.Serializer = DS.RESTSerializer.extend({
addAttributes: function(data, record) {
record.eachAttribute(function(name, attribute) {
if (!attribute.options.readOnly) {
this._addAttribute(data, record, name, attribute.type);
}
}, this);
}
});

这样做是遍历模型的属性,当它找到带有 readOnly 的属性时标志设置它跳过属性。

我希望这种机制适用于您的用例。

关于ember.js - EmberJS 中的非持久属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16588286/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com