Как иметь приспособления для определенных моделей и REST для всего остального?

#ember.js #ember-data

#ember.js #ember-данные

Вопрос:

У меня есть приложение Ember, использующее API, в котором реализовано большинство моделей, но некоторые из них нет, и для них я хотел бы предоставить приспособления.

 App.ApplicationAdapter = DS.RESTAdapter.extend({
  host: 'http://api.com'
});

App.Post = DS.Model.extend({
  title: DS.attr(),
  body: DS.attr(),
  author: DS.attr()
});

// ...

this.store.find('post', 1); // http://api.com/post/1

// ...

App.Tag = DS.Model.extend({
  hashtag: DS.attr(),
  color: DS.attr()
});

App.Tag.FIXTURES = [
  { hashtag: 'foo', color: '#000' },
  { hashtag: 'bar', color: '#fff' }
]

// ...

this.store.find('tag', 1) // searches among fixtures
  

Возможно ли это?

Комментарии:

1. Если вы используете ember-cli , у вас может быть адаптер для конкретной модели. Например adapters/tag.js который расширяет DS.FixtureAdapter.

Ответ №1:

Вы можете сделать адаптеры специфичными для моделей, выполнив это: App.TagAdapter = DS.FixtureAdapter.extend();

Комментарии:

1. Это более точно, что я хотел 🙂

Ответ №2:

Как насчет использования другой модели с этим конкретным маршрутом?

 App.TagRoute = Ember.Route.extend({
    model: function() {
        return [
            { hashtag: 'foo', color: '#000' },
            { hashtag: 'bar', color: '#fff' }
        ];
    }
});
  

Комментарии:

1. Мне нужны эти теги, сохраненные, потому что я использую их в другом месте. Или я все еще могу захватить их таким образом?

2. На самом деле, это именно то, что мне было нужно. App.TagController model автоматически присваивается этому массиву, поэтому я могу получить к нему доступ таким образом. Спасибо!