根据我到目前为止学到的知识,我知道我必须在序列化程序中做一些事情来解决下面的问题,但是有点丢失了…
我的api返回一个名为PortfolioSummaryDto的对象,我的Ember模型被命名为“portfoliolistitem”。
这给了我以下错误(这是有意义的),在有效负载中遇到了"portfolio_summary_dtos“,但是没有为模型名”portfolio-汇总-dto“(使用portfolio_summary_dtos解析的模型名称)找到模型。
接下来,我想调用任何API调用,其中返回的对象/s及其名称(和属性名称)与我的Ember模型完全不同。
有人能告诉我一些阅读如何“映射”api对象到成员模型吗?
发布于 2016-06-23 07:22:29
ember.js的一般思想是约定而不是配置,因此您必须以一种特定的方式命名ember.js模型的属性和名称,以访问负载的底层JSON属性。
PortfolioSummaryDto ->投资组合-摘要-dto
但是,如果要自定义此行为,则必须重写此约定。
若要重写序列化过程,必须实现自己的ember.js序列化程序。让我们假设您不想为每个ember.js模型实现一个单独的序列化程序,那么您可以对模型名称执行以下操作:
在app/application/model-mapping.js中创建这样的配置文件
export default {
'PortfolioSummaryDto': 'portfoliolistitem',
/* add more here */
}该文件表示从模型文件到ember.js模型文件的映射。然后以这样的方式创建或自定义应用程序序列化程序:
import DS from 'ember-data';
import mappingTable from './model-mapping';
export default DS.RESTSerializer.extend({
modelNameFromPayloadKey(payloadKey) {
return mappingTable[payloadKey] || payloadKey;
}
});https://stackoverflow.com/questions/37976040
复制相似问题