Ember.js pushPayload是';我没打电话
我试图修改RESTSerializer中pushPayload的行为。但是,从未调用该函数Ember.js pushPayload是';我没打电话,ember.js,ember-data,Ember.js,Ember Data,我试图修改RESTSerializer中pushPayload的行为。但是,从未调用该函数 pushPayload: function(store, payload) { console.log('pushPayload'); payload = this.normalizePayload(payload); for (var prop in payload) { var typeName = this.typeForRoot(prop),
pushPayload: function(store, payload) {
console.log('pushPayload');
payload = this.normalizePayload(payload);
for (var prop in payload) {
var typeName = this.typeForRoot(prop),
type = store.modelFor(typeName),
typeSerializer = store.serializerFor(type);
/*jshint loopfunc:true*/
var normalizedArray = map.call(Ember.makeArray(payload[prop]), function(hash) {
return typeSerializer.normalize(type, hash, prop);
}, this);
store.pushMany(typeName, normalizedArray);
}
},
normalizePayload: function(payload) {
console.log('normalize');
return payload;
},
这将仅输出:
正常化
我真的不知道发生了什么事。我照抄了这两种方法。没有输入错误,如果normalizePayload被称为pushPayload,那么也应该被称为pushPayload
normalizePayload
从extractSingle
(store.find('foo',1);
)、store.extractArray
(store.find('foo');
)和pushPayload
(store.pushPayload('foo',obj);
)调用
您需要在存储上实际调用pushPayload
,并定义序列化程序的类型。此外,请注意,map在文档的前面定义:
var map = Ember.ArrayPolyfills.map;
App.FooSerializer = DS.RESTSerializer.extend({
pushPayload: function(store, payload) {
console.log('pushPayload');
payload = this.normalizePayload(payload);
for (var prop in payload) {
var typeName = this.typeForRoot(prop),
type = store.modelFor(typeName),
typeSerializer = store.serializerFor(type);
/*jshint loopfunc:true*/
var normalizedArray = map.call(Ember.makeArray(payload[prop]), function(hash) {
return typeSerializer.normalize(type, hash, prop);
}, this);
store.pushMany(typeName, normalizedArray);
}
},
});
谢谢,我对这个问题有一个根本性的误解。我在使用find()时,不知何故,toughtpushpayload在后面被调用,然后被称为normalizedPayload。要学的东西太多了!