serialization - 尝试扩展 JSONSerializer 时未定义 get

标签 serialization ember.js ember-data

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

我选择序列化函数而不进行修改,但是当我运行 Ember 时,我收到此错误:

ReferenceError: get is not defined

这是我的代码:

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;
    },
});

我没有更改任何代码。这是原件。为什么 get 突然未定义?它是在原始文件 JSONSerialiser 的第 1 行导入的。

你能帮我吗?

最佳答案

它们在创建序列化器时在作用域中定义了 get,但这不会扩展到它们的作用域之外到您的文件中。

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

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

关于serialization - 尝试扩展 JSONSerializer 时未定义 get,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27768144/

相关文章:

java - 使用 snakeyaml 库在 Java 中将对象序列化为 YAML

javascript - 使用 emberjs 选择 View 填充选择框

javascript - emberjs 拆分 Promise 数组

ember.js - 使用 ember 应用套件测试时如何获取 ember 的商店?

java - 测试类的序列化

.net - 反序列化时如何从json中删除k__BackingField

java - 与套接字交换对象

ember.js - 回滚删除以处理 Ember.js 中的服务器错误

javascript - Ember.JS并发任务,perform()不是函数

amazon-web-services - 将Ember.js应用程序部署到AWS Elastic Beanstalk