2012-03-04 2 views
4

Я пытаюсь реструктурировать тесно связанные части приложения ember.js, особенно взгляды и шаблоны для контроллеров.Ember.js: Как я могу отделить мои взгляды от моих контроллеров?

Все примеры, которые я видел, связывают представления непосредственно с контроллерами в определении класса представления или передают (глобальный) путь к представлению в самом шаблоне.

Смеситель TargetActionSupport (DelegateSupport в sproutcore, я думаю), кажется хорошим кандидатом, но все равно потребует установки цели (контроллера) и действия в самом шаблоне.

В идеале я хотел бы создать экземпляр моих взглядов в моем контроллере (как-то), установить цели и действия, но также установить презентационные переменную в моих шаблонах (например: статические классы, идентификатор), но я не уверен, как это сделать, или это правильный подход.

+0

Аргумент для MVC понятен. Контроллер добавляет определенный набор операций, которые могут быть выполнены на модели. Любой, кто был вокруг большого проекта, где говорят, что страницы JSP вносят изменения непосредственно в данные, знают, почему. На мой взгляд, это достаточно абстракция (учитывая, что когда-либо бит абстракции приходит за счет стоимости). Какова цель следующего шага? –

ответ

5

Вы можете программно инстанцируете взгляды и вставить их в DOM, где бы вы хотели:

var view = Ember.View.create(); 
view.appendTo('#someElement'); 

Если вы хотите устранить глобальные обязательные пути, вы можете передать ссылку контроллера к представлению на конкретизации:

var controller = Ember.Object.create({content: {}}), 
    view = Ember.View.create({ 
     controller: controller, 
     contentBinding: 'controller.content' 
    }); 

Я также предлагаю заглянуть в Ember StateManager.