Emberjs コアには、Ember.StateManager を拡張する新しいルーター実装があります。これは私が現在実装している基本的なルーターです (coffeescript を使用):
Emee.set "stateManager", Ember.Router.create
location: "hash"
enableLogging: true
start: Ember.State.extend
index: Ember.State.extend
route: "/"
connectOutlets: (manager) ->
console.log(manager)
tasks: Ember.State.extend
route: "/tasks"
index: Ember.State.extend
route: "/"
show: Ember.State.extend
route: "/show"
users: Ember.State.extend
route: "/users"
index: Ember.State.extend
route: "/"
Emee は私の Ember 名前空間です。いくつか質問があります。
1) ページがハッシュ付きの URL で読み込まれるとhttp://localhost:3000/#tasks
、正しい start.tasks.index 状態に移動しますが、hashChange では、現在の状態の routePath にメッセージを送信するだけです。Emee.stateManager.route("/tasks") も同じことを行います。状態を変更せず、現在の状態の routePath にメッセージを送信します。自分で routePath を実装する必要がありますか? そうでない場合、ルートを提供して状態を変更するにはどうすればよいでしょうか?
2)状態に入ったときにどの関数が呼び出されるかについて、多くの変更が見られます。現在、「connectOutlets」は、状態に入ったときに呼び出される関数の名前のようです。これは、コントローラーをセットアップするための正しいページですか?
アップデート
ember コードを最新リビジョンに更新しました。私のルーターは次のようになります。
Emee.Router = Ember.Router.extend
location: "hash"
enableLogging: true
root: Ember.State.extend
index: Ember.State.extend
route: "/"
redirectsTo: 'tasks.index'
tasks: Ember.State.extend
route: "/tasks"
index: Ember.State.extend
route: "/"
connectOutlets: (manager) ->
console.log("in index");
show: Ember.State.extend
route: "/show"
connectOutlets: (manager) ->
console.log("in show");
users: Ember.State.extend
route: "/users"
index: Ember.State.extend
route: "/"
Emee.initialize()
ブラウザの進むボタンと戻るボタンはまだ機能しません。routePath
それらはすべてリーフノードであるため、返されるだけを呼び出します。何か小さなものが欠けていると思いますが、指を置くことができませんでした。