2013-11-26 4 views
0

При использовании {{render "modelHandler" model}} соответствующая функция контроллера model никогда не вызывается.Заглушка модели Ember Controller никогда не называлась

Воспроизводится здесь: http://jsbin.com/EVoXAceP/3/edit

Я 90% уверен, что это ошибка. Я размещаю это здесь, прежде чем отправлять в github, если есть что-то очевидное, что я пропустил, или «Я делаю это неправильно». В любом случае, если бы вы могли любезно указать мне в правильном направлении.

Вариант использования (для чего мне это необходимо для работы в первую очередь).

Я использую {{render}} для включения шаблона AddressAdd, для которого мне нужно расширить модель, чтобы включить список состояний, а также состояние по умолчанию. Хотя я мог загружать состояния в родительскую модель (скажем, свойство или карточку контакта), так как во многих представлениях есть AddressAdd, я бы хотел избежать необходимости вручную добавлять информацию для выпадания каждый раз.

Так что если вы также знаете лучший способ реализации этого, помимо {{render}} и крюка модели контроллера, сообщите мне об этом!

ответ

1

Это не ошибка, крючок модели запускается только при посещении URL-адреса, связанного с этим маршрутом, и он живет на маршруте, а не на контроллере. Кроме того, если у вашего контроллера есть модель, он должен быть ObjectController (если это не массив, то это ArrayController).

http://jsbin.com/EVoXAceP/13/edit

При вызове визуализации вы говорите, вы хотите сделать определенный шаблон с использованием конкретного контекста.

Я бы создал маршрут под маршрутом, в котором вы находитесь, и используйте ссылку без модели, что приведет к срабатыванию крюка модели.

1

В шаблоне приложения

{{ render 'foo' bar }} 

не вы должны иметь bar недвижимость в ApplicationController?

App.ApplicationController = Ember.Controller.extend({ 
    bar: {isBar: 'yup'} 
}); 
+0

Это оказался случай работы поздно вечером и забыли, что крюк модели находится на маршруте, а не на контроллере. Спасибо хоть! – runspired

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