私はEmberのルーター(v1.0.pre)を単一の動的セグメントで使用していて、本当に満足しています。
たくさんの魔法。
しかし、私は複数の動的セグメントに苦労しています。
- 何を
serialize()
/deserialize()
返す必要がありますか? transitionTo()
呼び出しとそこでのコンテックスはどのように見えるべきですか?
誰かがこれに光を当てることができますか?
私はEmberのルーター(v1.0.pre)を単一の動的セグメントで使用していて、本当に満足しています。
たくさんの魔法。
しかし、私は複数の動的セグメントに苦労しています。
serialize()
/deserialize()
返す必要がありますか?transitionTo()
呼び出しとそこでのコンテックスはどのように見えるべきですか?誰かがこれに光を当てることができますか?
serialize
また、コンテキスト オブジェクトにカスタム シリアル化がある (つまり、ember-data モデル インスタンスではない)deserialize
場合にのみ実装する必要があります。したがって、完全な ember スタックを使用している間は、これらのメソッドを実装する必要はありません。
transitionTo
ルート イベント ハンドラーから呼び出す必要があり、コンテキストは次のように渡されます。
showPost: function (router, event) {
var post = event.context;
router.transitionTo('posts.show', post);
}
showPost
イベントが次のようなヘルパーによってトリガーされた場合action
:
{{#each post in controller}}
<a {{action showPost post}}>Show post {{post.title}}</a>
{{/each}}
複数のコンテキスト オブジェクトを渡すことで、より複雑な遷移を実現できます (深くネストされたルートの場合)。
router.transitionTo('posts.member.comments.show', post, comment);
post
&comment
コンテキストは適切なルートに渡されますが、ルーティングはネストされたルートに降ります。
編集
ember-data がなければ、次のようになります。
posts: Ember.Route.extend({
route: 'posts',
member: Ember.Route.extend({
route: '/:post_id',
show: Ember.Route.extend({
route: '/'
}),
comments: Ember.Route.extend({
route: 'comments',
show: Ember.Route.extend({
route: '/:comment_id'
})
})
})
})
そして、クラス メソッドとインスタンス プロパティを持つ 2 つのクラス& がありますApp.Post
。App.Comment
find
id
App.Post = Ember.Object.extend({
id: null
});
App.Post.reopenClass({
find: function (id) {
// retrieve data, instanciate & return a new Post
}
});
App.Comment = Ember.Object.extend({
id: null
});
App.Comment.reopenClass({
find: function (id) {
// retrieve data, instanciate & return a new Comment
}
});