Chr*_*lne 15 ember.js ember-data jsonapi-resources
我正在创建一个在线表单构建器,在前端使用Ember 2.0,在后端使用json_api_resources gem创建Rails 4.2.
在发布表单的过程中,用户必须能够将一段代码剪切/粘贴到他/她的网页中,以便'ajax in'他们已经配置的表单.
因此,Form模型的'embed-snippet'属性应该是只读的.当用户对表单进行更改并重新保存记录时,我不希望将代码段字段的内容发送回服务器.
我考虑过的一些方法:
理想情况下,有一种更好的方法来处理这个问题.
就像是:
'DS.attr('string', { readOnly: true })
Run Code Online (Sandbox Code Playgroud)
所以我的问题是,确保此字段的内容不会被发送回服务器的最佳方法是什么?
bok*_*nic 22
要获得{ readOnly: true }功能(这使得更容易添加新模型/ attrs),您可以在以下方面自定义serializeAttribute方法JSONAPISerializer:
(in serializers/application.js):
import DS from 'ember-data';
export default DS.JSONAPISerializer.extend({
serializeAttribute(snapshot, json, key, attribute) {
// do not serialize the attribute!
if (attribute.options && attribute.options.readOnly) {
return;
}
this._super(...arguments);
},
});
Run Code Online (Sandbox Code Playgroud)
bma*_*mac 17
最简单的方法是为表单模型创建自定义序列化程序,并使用该attrs属性来防止该属性被序列化.
在app/serializers/form.js:
export default DS.JSONAPISerializer.extend({
attrs: {
embedSnippet: { serialize: false }
}
});
Run Code Online (Sandbox Code Playgroud)
有关attrs的更多信息和示例,请参阅API文档http://emberjs.com/api/data/classes/DS.JSONSerializer.html#property_attrs