2012-05-05 9 views
10

Mam do czynienia z problemem, w którym muszę połączyć menedżera stanu, kontroler i widok razem, a jednocześnie unikać brzydkiego spaghetti code. Pytanie brzmi: które z tych obiektów powinny zostać stworzone jako pierwsze i czy obowiązek tworzenia pozostałych?Menedżer danych Ember, kontroler, widok, model: jak połączyć je ze sobą?

Mówiąc dokładniej, oto mój przykład. Pierwszy widok jest podklasą widokiem pojemnika, który ma widok Collection jako dziecko:

App.MyView = Ember.ContainerView.extend { 

    childViews: ['streamView'] 

    streamView: Ember.CollectionView.extend { 
    } 

} 

Regulator jest tak podklasy Ember.ArrayController ze sposobem obciążenia:

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

Zarządca stan ma stan widoku, który będzie instancję App.MyView:

App.MyStateManager = Ember.StateManager.extend { 

    initialeState: 'ready' 

    ready: Ember.ViewState.extend { 

     view: App.MyView  

    } 
} 

teraz muszę wykonać następujący test:

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) 

Aby ostatnie oczekiwanie zadziałało, muszę powiązać zawartość mojego streamView, który jest dzieckiem aplikacji App.MyView z zawartością kontrolera. Jak mogę to zrobić w sposób czysty?

Ponadto, jak przekazać odniesienie do menedżera stanu do widoku i kontrolera, aby powiadomić kierownika o wystąpieniu jakiegoś zdarzenia, aby przetransportować go do innego stanu. Na przykład kliknięcie elementu lub kontrolera zakończyło pracę?

Odpowiedz

3

Spójrz na to zagadnienie autorstwa Yehudy Katza, omawiając nową implementację routera. https://gist.github.com/2728699

Sugestia wydaje się polegać na uczynieniu routera, a następnie menedżerem stanu, punktu, w którym 3 warstwy są ze sobą powiązane.

+0

Wydaje się być martwym ogniwem. – Johnny

Powiązane problemy