いくつかのビューを扱う次の StateManager があります。で初期状態に手動で移行する必要がないようにしたいと思い App.stateManager.transitionTo('showingPhotos')
ます。initialState
状態マネージャー のプロパティを使用したいだけです。
StateManagerの プロパティを使用してinitialState
も、この場合は機能しません。これは、コントローラーが に挿入されるまで使用できないためですApp.initialize(App.stateManager)
。
コントローラーを注入しながら、手動で初期状態に移行する必要を回避する方法はありますか? このような状態マネージャーを構築するためのより良い方法はありますか?
2 つの JSfiddles を作成しました。
http://jsfiddle.net/GmD8A/ - これは機能しますが、手動で初期状態に移行する必要があります
http://jsfiddle.net/tgbuX/ - これはinitialState
、手動で初期状態に移行するのではなく使用するため、機能しません。
PhotosListView = Ember.View.extend({
template: Ember.Handlebars.compile('<h2>Showing Photos</h2><a {{action "showContacts"}}>Show Contacts</a>')
});
ContactsListView = Ember.View.extend({
template: Ember.Handlebars.compile('<h2>Showing Contacts</h2><a {{action "showPhotos"}}>Show Photos</a>')
});
StateManager = Ember.StateManager.extend({
rootElement: '#body',
showingContacts: Ember.ViewState.extend({
view: ContactsListView,
showPhotos: function(manager) {
manager.transitionTo('showingPhotos');
},
enter: function(manager) {
this._super(manager);
this.setPath('view.controller', manager.get('photosController'));
}
}),
showingPhotos: Ember.ViewState.extend({
view: PhotosListView,
showContacts: function(manager) {
manager.transitionTo('showingContacts');
},
enter: function(manager) {
this._super(manager);
this.setPath('view.controller', manager.get('contactsController'));
}
})
});
App = Ember.Application.create()
App.PhotosController = Ember.ArrayController.extend()
App.ContactsController = Ember.ArrayController.extend()
App.stateManager = StateManager.create()
App.initialize(App.stateManager) // This injects the controllers
App.stateManager.transitionTo('showingPhotos') // I don't want to have to manually transition into this initial state
</p>