2012-05-05 2 views
10

У меня возникла проблема, когда мне нужно связать диспетчер состояний, контроллер и просмотреть вместе и в то же время избежать получения уродливого кода спагетти. И возникает вопрос: какой из этих объектов должен быть создан первым и нести ответственность за создание других?Ember statemanager, контроллер, вид, модель: как связать их вместе?

Конкретно, вот мой пример. Первый вид является подклассом вида контейнера, который имеет вид коллекции, как ребенок:

App.MyView = Ember.ContainerView.extend { 

    childViews: ['streamView'] 

    streamView: Ember.CollectionView.extend { 
    } 

} 

Контроллер так же, как подкласс Ember.ArrayController с методом загрузки:

App.MyController = Ember.ArrayController.extend { 
    load: -> 
     console.log "loading data" 
} 

состояния менеджер имеет состояние представления, которое будет создать экземпляр App.MyView:

App.MyStateManager = Ember.StateManager.extend { 

    initialeState: 'ready' 

    ready: Ember.ViewState.extend { 

     view: App.MyView  

    } 
} 

Теперь мне нужно выполнить следующий тест:

controller = App.MyController.create {} 
manager = App.MyStateManager.create {} 

expect(manager.getPath('currentState.name').toEqual('ready') 
expect(controller.load).toHaveBeenCalled() 
streamView = manager.getPath('currentState.view.streamView.content') 
expect(streamView.content).toEqual(controller.content) 

Чтобы сделать последнее ожидание работать, мне нужно связать содержимое моего streamView, являющегося дочерним элементом App.MyView с содержимым контроллера. Как я могу сделать это чисто?

Кроме того, как передать ссылку на диспетчер состояний на представление и контроллер, чтобы уведомить менеджера о возникновении какого-либо события, поэтому ему необходимо перейти в другое состояние. Например, щелчок по элементу или контроллеру завершил работу?

ответ

3

Взгляните на этот сущность Yehuda Katz, обсуждая новую реализацию маршрутизатора. https://gist.github.com/2728699

Представляется, что предложение состоит в том, чтобы сделать маршрутизатор и по расширению менеджером состояния точку, в которой 3 слоя связаны друг с другом.

+0

Кажется, что это мертвая ссылка. – Johnny

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