我一直在使用Ember's Router(v1.0.pre)單動態段,真的很滿意。
這麼多魔法。Ember.js路由器和動態段
不過,我跟多個動態段struggeling:
- 什麼都要
serialize()
/deserialize()
回報? transitionTo()
電話和那裏的電話怎麼樣?
有人可以對此有所瞭解嗎?
我一直在使用Ember's Router(v1.0.pre)單動態段,真的很滿意。
這麼多魔法。Ember.js路由器和動態段
不過,我跟多個動態段struggeling:
serialize()
/deserialize()
回報?transitionTo()
電話和那裏的電話怎麼樣?有人可以對此有所瞭解嗎?
serialize
和deserialize
只應實施時您的上下文對象具有自定義序列(即不是灰燼數據模型實例)。所以你不應該在使用完整的燼棧時實現這些方法。
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
上下文將被傳遞給撥款的路線,而路由將陷入嵌套的路線。
編輯
無燼數據,它看起來像:
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'
})
})
})
})
而且你將有兩班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
}
});
謝謝邁克,那就是我現在有多遠。 我沒有使用燼數據,所以我必須自己去做find()。 在你的例子中:如何'serialize()'/'反序列化()'看看路線_posts.member.comments.show_? – david8401 2012-08-09 13:29:02
我已經添加了用於無數據解決方案的示例。希望這可以幫助! :-) – 2012-08-09 15:20:40
邁克,感謝您的更新,但在您的示例中,它基本上每條路線只有1個動態細分。 我的用例是:我有一個儀表板,每個控件由1個控制器控制。同時可以顯示多個小部件。 我期待這樣一個網址:''/ charts/chart1 /:id/chart2 /:id'' 因此,現在我需要將多個上下文傳遞給路由'charts'並讓它設置每個控制器的每個上下文。這就是我陷入困境。 – david8401 2012-08-09 15:33:10
我很想知道Ember世界對「動態細分市場」意味着什麼。 – Abdull 2013-03-25 13:32:34
@Abdull,「segment」 - URL的一部分,「動態」 - 根據應用程序的當前狀態而變化。很簡單,不是嗎? – raindev 2015-05-09 09:27:13