Как я могу использовать внешний URL-адрес в ember-модели

Это может показаться простым вопросом, но как я могу использовать внешний URL с Ember-моделью? Все примеры просто предполагают один и тот же домен. Я хотел бы использовать, например. пасека или костровая база.

https://github.com/ebryn/ember-model


person Cameron A. Ellis    schedule 31.01.2014    source источник


Ответы (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
comment
Должен ли я устанавливать это для каждого типа модели? Я искал более одноэлементное решение. Спасибо. - person Cameron A. Ellis; 01.02.2014
comment
Лучшее, что я мог придумать в глобальном смысле, — это присвоить имя хоста переменной, а затем ссылаться на эту переменную при настройке URL-адреса для каждой модели. Кроме того, вы можете создать собственный адаптер и переопределить buildURL (хотя это выглядит несколько грязно). Я знаю, что ember data предоставляет возможность указывать имя хоста для каждой модели более удобным для повторного использования способом. К сожалению, насколько я могу судить, сейчас в модели ember такой возможности нет. В любом случае, я обновлю ответ, чтобы показать, как будет выглядеть переопределение метода. - person Adam; 01.02.2014