Как получить Ember Data "store" из любого места приложения, чтобы я мог делать store.find()?

С недавним обновлением я знаю, что в маршрутизаторах и контроллерах я просто могу просто сделать this.store.find('model'). Однако у меня есть некоторые функции, которые нужно вызвать find, которые не входят в маршрутизаторы и контроллеры. Итак, как я могу получить экземпляр store из любого места в приложении Ember?

Я знаю, что худшее приходит в худшее, я могу сделать App.__container__.lookup('store:main'), но я постараюсь держаться подальше от этого.

Ответы

Ответ 1

TRANSITION doc говорит, что вы можете сделать это, чтобы вставить хранилище в компоненты:

App.inject('component', 'store', 'store:main');

Возможно, вы сможете изменить 'component' на 'view' или на 'model', но я не уверен в этом.

Ответ 2

Вы можете попробовать сделать

this.get('controller').get('store').find('model')

Это будет выглядеть в представлении, например.

Ответ 3

Вы можете сделать

App.Model.store.find('model')

Если у вас есть определенный атрибут для фильтрации, вы можете сделать:

App.Model.store.find('model', {'attribute_name' : 'matching_to_this_value'})

Подробнее об этом сообщении.

Ответ 4

С Ember Data 1.0.0-beta.X:

App.YourModelType.store.find("yourModelType", someId).then( 
  function(modelInstance) { 
  ...
  });