Ember.js 未使用不规则模型名称的余烬数据
在我的项目中,我为一个名字不规则的模型设置了一个拐点,Ember.js 未使用不规则模型名称的余烬数据,ember.js,ember-data,ember-cli,Ember.js,Ember Data,Ember Cli,在我的项目中,我为一个名字不规则的模型设置了一个拐点,campus 出于某种原因,在从Ember CLI 0.2.7更新到Ember CLI 1.13.8后,拐点不再应用于模型 尝试访问存储时,this.store.findRecord('campus',params['campus\u id'),我收到一条警告 WARNING: Encountered "campus" in payload, but no model was found for model name "campu" (res
campus
出于某种原因,在从Ember CLI 0.2.7更新到Ember CLI 1.13.8后,拐点不再应用于模型
尝试访问存储时,this.store.findRecord('campus',params['campus\u id')
,我收到一条警告
WARNING: Encountered "campus" in payload, but no model was found for model name "campu" (resolved model name using app@serializer:campus:.modelNameFromPayloadKey("campus"))
然后是这个错误
No model was found for 'campu' Error: No model was found for 'campu'
返回有效载荷看起来像这样
{
campus: {
id: 1,
name: "Default Campus"
},
meta: {
total: 1,
page: 1
}
}
我以前成功地使用了初始化器
import Ember from 'ember';
export function initialize(/* registry, application */) {
var inflector = Ember.Inflector.inflector;
inflector.irregular('campus', 'campuses');
}
export default {
name: 'inflections',
initialize: initialize
};
我已经尝试过更新到Ember Data的最新版本1.13.13,并将Ember拐点更新到1.9.3。我也尝试过将不规则的拐点移到模型中,但还没有解决这个问题
我还尝试在控制台中运行以下代码,然后调用商店查看拐点设置为什么
var inflector = Ember.Inflector.inflector;
inflector.singularize('campus') // returns "campus"
inflector.pluralize('campus') // returns "campuses"
这个问题非常令人沮丧,因为似乎根本没有办法解决它。好吧,我能够用EmberData-2.0.1重现这种令人困惑的行为,它看起来像是ember数据中的一个bug 可能的解决办法:
//serializers/campus.js
import { ActiveModelSerializer } from 'active-model-adapter';
import Ember from "ember";
import DS from "ember-data";
const { normalizeModelName } = DS;
const { singularize } = Ember.String;
export default ActiveModelSerializer.extend({
// this is dublication from source but singuralize works as expected
modelNameFromPayloadKey: function(key) {
return singularize(normalizeModelName(key));
}
)};
嗯,我能够用EmberData-2.0.1重现这种令人困惑的行为,它看起来像是ember数据中的一个bug 可能的解决办法:
//serializers/campus.js
import { ActiveModelSerializer } from 'active-model-adapter';
import Ember from "ember";
import DS from "ember-data";
const { normalizeModelName } = DS;
const { singularize } = Ember.String;
export default ActiveModelSerializer.extend({
// this is dublication from source but singuralize works as expected
modelNameFromPayloadKey: function(key) {
return singularize(normalizeModelName(key));
}
)};
抱歉,忘记添加适配器类型。对于序列化程序,我使用的是来自的ActiveModelSerializer,但应用程序本身使用restaAdapter
inflector.unregular('campus','campuses')代码>是打字错误吗?@Artych,我不知道你说的“打字错误”是什么意思。Ember.Inflector.Inflector.Unregular('campus','campus')应该告诉Ember campus是单数形式,复数形式是campus。这是预期的行为,也是更新之前发生的情况。对不起,忘记添加适配器类型了。对于序列化程序,我使用的是来自的ActiveModelSerializer,但应用程序本身使用restaAdapterinflector.unregular('campus','campuses')代码>是打字错误吗?@Artych,我不知道你说的“打字错误”是什么意思。Ember.Inflector.Inflector.Unregular('campus','campus')应该告诉Ember campus是单数形式,复数形式是campus。这是预期的行为,也是更新之前发生的情况