2

いくつかのビューを扱う次の 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>

4

1 に答える 1

2

最新の Ember バージョンを確認する必要があります。これには Router があり、任意の*Controllerクラス インスタンスで自動配線され、outlets意図した方法で管理されます。

https://gist.github.com/2679013 & https://gist.github.com/2728699から始めることができます

編集

新しい進行中のガイド @ https://emberjs-staging-new.herokuapp.com/guides/outlets#toc_the-routerがあります

于 2012-06-07T13:23:05.753 に答える