首页 > 解决方案 > 灰烬数据。如何将模型中未定义的属性发送到服务器?

问题描述

如果我从服务器收到额外的属性(未在模型中定义),我不会将它们存储在 ember 模型中。因此,PUT否则POST我不会将它们发送到服务器。

有没有办法将这些额外的属性保留为“兑现数据”并将它们发送回服务器?

标签: javascriptember.jsember-data

解决方案


您可以通过定制您的序列化程序来发送和接收数据来做到这一点,例如,如果您使用 JSONAPIAdapter,您可以使用如下序列化程序:

export default class YouRouteSerializer extends JSONAPISerializer {

  //for sending data
  serialize(snapshot, options) {
    let json = super.serialize(...arguments);

    //add a vlue that doesnt exist in the model
    json.data.attributes.theNewAttributeName =  'example';

    // delete a value 
    delete json.data.attributes.theAttributeNameToBeDeleted;

    return json;
  }


 //and for receiving (this is what you are looking for)

normalizeResponse(store, primaryModelClass, payload, id, requestType) {

    let extratData = payload.data.attributes.yourExtratData;
    // here store you extrat data somewhere else , localstorage for example
    // thenn
    // delete your extra data
    delete payload.data.attributes.yourExtratData;

    return super.normalizeResponse(...arguments);
  }
}

这是自定义序列化程序的参考


推荐阅读