2013-11-15 3 views
1

Я пытаюсь добавить приложение ember к существующему (большому) rails-приложению. Если это сработает, я бы хотел использовать ember для многих новых областей приложения, но я начинаю с малого.Загрузка экземпляра модели с данными ember, внешними для приложения ember

По существу, пользователь находится на рельсовой странице индекса учащихся, нажимает на одну из многих ссылок для управления IEP учеников, а затем отображается модальный блок, содержащий приложение ember. Когда мы первые шипами это еще в мае, мы сделали это следующим образом:

showDialog: (url) -> 
    studentId = ... 
    $('#emberDialog').dialog 
    open: -> 
     student = App.Student.find(studentId) 
     App.Router.router.transitionTo('studentIeps.index', student) 

Теперь, когда мы собирание это снова, я нахожу, что в отбойник от Ember V1.0.0-rc.5-80 -gf54e8ef до V 1.1.3 + pre.e0ffbf84 и Ember-данные от V0.13-30 до V1.1.0-beta.3-4 методы Model.find были удалены.

Есть ли поддерживаемый способ сделать это больше? Я пытаюсь создать экземпляр модели, внешней для приложения ember, а затем использовать это, чтобы установить текущий маршрут приложения ember. Halp?

ответ

1

Вы можете получить экземпляр контроллера приложения из контейнера, оттуда вы можете делать все, что вы делали раньше. Контроллеры имеют экземпляр магазина на них, так как теперь вы получаете модели. Вы, вероятно, некоторые другие вопросы, с вашими данными/адаптерами см переходной документ: https://github.com/emberjs/data/blob/master/TRANSITION.md

showDialog: (url) -> 
    studentId = ... 
    $('#emberDialog').dialog 
    open: -> 
     appController = App.__container__.lookup('controller:application') 
     store = appController.get('store') 
     student = store.find('student', studentId) 
     appController.transitionToRoute('studentIeps.index', student) 
+0

Хотя это будет работать прямо сейчас, я не уверен, что я чувствую себя комфортно развертывание этого производство. App .__ container __. Lookup() - это серьезный взлом во внутренних компонентах. Имеет ли данные Ember полностью удалить публичный api для доступа к хранилищу извне? Или, может быть, есть лучший способ получить экземпляр модели за пределами приложения ember? – user2997895

+0

Я могу понять вашу озабоченность. Двойной __ выглядит взломанным, и это справедливо. Иегуда не хотел, чтобы люди касались внутренних дел из внешнего мира;) Использование роутера в нынешнем режиме, которое вы делаете, играет с внутренними элементами ember. Это не публичный крюк, который обсуждается или документируется на их сайте. Кроме того, они преднамеренно только сделали магазин доступным для контроллеров/маршрутов, чтобы избежать неправильного использования пользователями хранилища (например, на уровне представления, внутри компонентов и т. Д.). – Kingpin2k

+0

Итак, истинный ответ на этот вопрос: «Эмбер больше этого не поддерживает». Спасибо, это на самом деле то, что мне нужно знать :) – user2997895

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