Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ember.js pushPayload是';我没打电话_Ember.js_Ember Data - Fatal编程技术网

Ember.js 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),

我试图修改RESTSerializer中pushPayload的行为。但是,从未调用该函数

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。要学的东西太多了!