尝试扩展JSONSerializer时未定义get

时间:2015-01-04 17:14:47

标签: serialization ember.js ember-data

我尝试通过扩展DS.JSONSerialzer来定义我的自定义序列化程序。

我选择了序列化函数而没有修改但是当我运行Ember时,我收到了这个错误:

  

ReferenceError:get未定义

这是我的代码:

import DS from 'ember-data';

export default DS.JSONSerializer.extend({
    serialize: function(record, options) {
        var json = {};
        if (options && options.includeId) {
            var id = get(record, 'id');
            if (id) {
                json[get(this, 'primaryKey')] = id;
            }
        }

        record.eachAttribute(function(key, attribute) {
            this.serializeAttribute(record, json, key, attribute);
        }, this);
        record.eachRelationship(function(key, relationship) {
            if (relationship.kind === 'belongsTo') {
                this.serializeBelongsTo(record, json, relationship);
            } else if (relationship.kind === 'hasMany') {
                this.serializeHasMany(record, json, relationship);
            }
        }, this);
        return json;
    },
});

我没有更改任何代码。这是原作。为什么得到突然未定义?它是在原始文件JSONSerialiser

的第1行中导入的

你能帮助我吗?

1 个答案:

答案 0 :(得分:2)

在创建序列化程序时,他们在作用域中定义了get,但这并未扩展到其作用域之外。

var get = Ember.get;
var isNone = Ember.isNone;
var map = Ember.ArrayPolyfills.map;
var merge = Ember.merge;

将所有get方法替换为Ember.get或将get定义为Ember.get