2015-01-13 2 views
0

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

Мне было интересно, где лучше всего сделать это в Ember?

  • В инициализаторе? Я слышал, что использовать этот магазин не рекомендуется ...
  • В маршруте приложения? Тогда как я могу получить к нему доступ со всех маршрутов и контроллеров? Использование this.modelFor('application')? Это хорошая практика?

Спасибо.

+0

Я не знаю, является ли использование маршрута приложения, и 'this.modelFor ('application')' является лучшим или рекомендуемым способом, но он работает для меня, чтобы загрузить основные данные. – Leeft

+0

мы зарегистрировали объект 'session' (' this.register ('session: main', session); '), а затем ввели все контроллеры (' this.inject ('controller', 'session', 'session : Основной); '). Тем не менее мы сохраняем информацию о зарегистрированном пользователе. – andrusieczko

+0

Какие данные вы хотите загрузить в любом случае, и это через данные ember или нет? Ваш вопрос не достаточно конкретный. – Leeft

ответ

0

Лучшее место будет в ApplicationRoute, вы можете сделать это в beforeModel или afterModel/setupController крючком, как вам нравится. Вот beforeModel пример:

ApplicationController = Ember.ObjectController.extend({ 
    beforeModel:function() { 
     var self = this; 

     var rsvp = Ember.RSVP.hash({ 
      fruits: self.store.find('fruit'), 
      candies: self.store.find('candy'), 
      meats: self.store.find('meats') 
     }}; 

     rsvp.then(function(models) { 
      self.controllerFor('fruits').set('model',models.fruits); 
      self.controllerFor('candies').set('model',models.candies); 
      self.controllerFor('meats').set('model',models.meats); 
     }); 
    } 
}); 

rsvp извлекает все модели вместе и ждет их впереди, прежде чем продолжить, которое происходит на then. Затем мы присваиваем все найденные модели свойству model на соответствующем контроллере.

Для этого в крюке afterModel это будет выглядеть по-другому.

+0

В моем случае мне нужно вводить данные во все мои контроллеры и маршруты, как я могу это сделать с вашим предложением? – alexmngn

+0

Маршруты не хранят данные; только контроллеры. Что вы подразумеваете под инъекцией? – NicholasJohn16

+0

Я собираюсь получить информацию о сеансе из api и хранить их, тогда мне нужно проверить эти данные сеанса в 'beforeModel()' например и перенаправить пользователя, если ему не разрешен доступ к маршруту. – alexmngn

Смежные вопросы