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ę?
Wydaje się być martwym ogniwem. – Johnny