Это может показаться простым вопросом, но как я могу использовать внешний URL с Ember-моделью? Все примеры просто предполагают один и тот же домен. Я хотел бы использовать, например. пасека или костровая база.
Как я могу использовать внешний URL-адрес в ember-модели
Ответы (1)
Вы можете просто установить полный URL-адрес в качестве свойства, которое устанавливается для модели, вместо относительного URL-адреса. Так:
App.User = Ember.Model.extend({
id: attr(),
name: attr(),
comments: hasMany("App.Comment", {key: 'comment_ids'})
});
App.User.url = "http://example.com/users";
Обновление:
Если вы не хотите указывать имя хоста в нескольких местах, проще всего будет присвоить имя хоста переменной, а затем ссылаться на эту переменную при объявлении URL-адреса. Однако, если вы действительно хотите проникнуть внутрь модели ember, вы также можете переопределить метод buildURL в пользовательском адаптере, например так:
App.CustomAdapter = Ember.RESTAdapter.extend({
buildURL: function(klass, id) {
var urlRoot = "http://example.com/" + Ember.get(klass, 'url');
if (!urlRoot) { throw new Error('Ember.RESTAdapter requires a `url` property to be specified'); }
if (!Ember.isEmpty(id)) {
return urlRoot + "/" + id + ".json";
} else {
return urlRoot + ".json";
}
}
});
person
Adam
schedule
01.02.2014
Должен ли я устанавливать это для каждого типа модели? Я искал более одноэлементное решение. Спасибо.
- person Cameron A. Ellis; 01.02.2014
Лучшее, что я мог придумать в глобальном смысле, — это присвоить имя хоста переменной, а затем ссылаться на эту переменную при настройке URL-адреса для каждой модели. Кроме того, вы можете создать собственный адаптер и переопределить buildURL (хотя это выглядит несколько грязно). Я знаю, что ember data предоставляет возможность указывать имя хоста для каждой модели более удобным для повторного использования способом. К сожалению, насколько я могу судить, сейчас в модели ember такой возможности нет. В любом случае, я обновлю ответ, чтобы показать, как будет выглядеть переопределение метода.
- person Adam; 01.02.2014