我正在尝试将自定义属性添加到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模型命名约定。
非常感谢。
答案 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;