ember.js – 如何防止Ember Data保存属性(即只读属性)

前端之家收集整理的这篇文章主要介绍了ember.js – 如何防止Ember Data保存属性(即只读属性)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用Ember 2.0在前端创建一个在线表单构建器,后端使用json_api_resources gem创建Rails 4.2.

在发布表单的过程中,用户必须能够将一段代码剪切/粘贴到他/她的网页中,以便以“ajax”形式配置.

因此,Form模型的“embed-snippet”属性应该是只读的.当用户更改表单并重新保存记录时,我不希望将代码段的内容发送回服务器.

我考虑过的一些方法

>修改序列化程序以检查此特定属性,并将其从有效载荷中删除,然后再将其发送到后端
>将’embed-snippet’字段转换为与Form模型关系的单独模型,然后将其从存储中排除
>创建一个新的Ember Data属性类型

理想情况下,会有一个更好的方法来处理这个问题.

就像是:

'DS.attr('string',{ readOnly: true })

所以我的问题是,什么是确保这个字段的内容不被发送回服务器的最佳方式?

解决方法

要获得{readOnly:true}功能(这使得添加新模型/ attrs更容易),您可以在JSONAPISerializer上自定义serializeAttribute方法

(在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);
  },});

猜你在找的JavaScript相关文章