将自定义属性添加到Ember Model

时间:2015-09-05 15:53:15

标签: javascript ember.js ember-data

我正在尝试将自定义属性添加到Ember数据模型中。具体来说,我想添加一个属性来定义要在我写的Ember数据适配器中使用的REST端点。

我的模型被定义为这样(使用自定义属性'endPoint'):

import DS from 'ember-data';

export default DS.Model.extend({

partner_id      : DS.attr('string'),
partner_key     : DS.attr('string'),
partner_name    : DS.attr('string'),
created         : DS.attr('string'),
status          : DS.attr('string'),
type            : DS.attr('string'),

endPoint        : 'api_entry'

});

在我的适配器中,我试图按如下方式访问该属性:

_buildURL: function (modelName, store, id, snapshot, requestType, query) {

    var host, namespace, url;

    var model = store.modelFor(modelName);

    var endPoint = model.endPoint;
    var endPoint2 = Ember.get(model, 'endPoint');

    console.log(endPoint, endPoint2);

    host = Ember.get(this, "host");
    namespace = Ember.get(this, "namespace");

    url = [];

    if (host) {
        url.push(host);
    }

    if (namespace) {
        url.push(namespace);
    }

    url.push(modelName);

    url = url.join("/");

    if (!host) {
    url = "/" + url;
    }

    return url;
},

在上面的console.log中,endPoint和endPoint2都是未定义的。我是Ember和Javascript的新手。我究竟做错了什么?有没有更'Ember'的方法来做到这一点?我不想将实际的REST端点名称用作我的模型名称,因为它们不符合Ember模型命名约定。

非常感谢。

1 个答案:

答案 0 :(得分:1)

您的buildURL函数处理模型而不是模型实例。您需要将属性添加到类中:

var model = DS.Model.extend({
  partner_id      : DS.attr('string'),
  partner_key     : DS.attr('string'),
  partner_name    : DS.attr('string'),
  created         : DS.attr('string'),
  status          : DS.attr('string'),
  type            : DS.attr('string')
});

model.reopenClass({
  endPoint        : 'api_entry'
});

export default model;