dec*_*hov 2 ember.js ember-data ember-old-router
在我的应用程序中,我试图保持路由结构尽可能接近API结构,这对于基本情况有用,但我仍然对以下情况感到困惑:
(参考http://emberjs.com/guides/outlets/#toc_nesting的例子)
检索/posts/:post_id/comments数据的最佳方法是什么(假设它没有给我/posts/:post_id)?
我应该以App.Comment.find(...)某种方式将帖子ID传递给comments.deserialize(...)方法吗?有没有比获得帖子ID更好的方法router.getPath('postController.content._id')?我正在使用修改后的DS.RESTAdapter.
父路由器参数不再可作为子路由中的参数访问,但应该用于检索和填充中间数据结构.
鉴于您的模型定义如下:
App.Post = DS.Model.extend({
text: DS.attr('string'),
// ...
comments: DS.hasMany('App.Comment')
});
App.Comment = DS.Model.extend({
// You may also have: "post: DS.belongsTo('App.Post')", but we do not care for this exemple
text: DS.attr('string'),
// ...
});
Run Code Online (Sandbox Code Playgroud)
这应该是有效的:
posts: Ember.Route.extend({
route: 'posts',
member: Ember.Route.extend({
route: '/:post_id', // [A]
connectOutlets: function (router, post) {
var applicationController = router.get('applicationController');
applicationController.connectOutlet('post', post); // [B]
},
show: Ember.Route.extend({
route: '/'
}),
comments: Ember.Route.extend({
route: 'comments',
connectOutlets: function (router) {
var postController = router.get('postController'),
comments = postController.get('comments'); // [C]
postController.connectOutlet('comments', comments);
},
}),
})
})
Run Code Online (Sandbox Code Playgroud)
post_id引用Post具有给定的模型实例id(请参阅此注释).PostController将由路由器填充传递的上下文:post,这是Post上面检索的实例(参见[A]).PostController是post模型实例上的ObjectController(ie Proxy),因此它直接保存注释.| 归档时间: |
|
| 查看次数: |
1458 次 |
| 最近记录: |