【发布时间】:2014-10-15 14:25:58
【问题描述】:
在使用{{link-to}} 访问的路由的controller 中获取models 时遇到问题
据我了解(在阅读http://emberjs.com/guides/routing/asynchronous-routing/ 之后),当从{{link-to 'route' model}} 访问路由时,不会调用route 的model 钩子。 model 直接传递给controller。这是 Ember 确保不会不必要地调用 AJAX 的一种方式。
例如,如果我转到{{link-to 'post-review' post}},我需要将多个post model 传递给PostReviewController。
App.Router.map(function () {
...
this.resource('post-review' , {path: '/post-review/:id'});
...
});
PostReviewRoute = Ember.Route.extend({
//method doesn't get called
model: function(params){
return Em.RSVP.hash({
post: this.store.find('post', params.id),
reviewTypes: this.store.find('reviewType')
});
}
});
ReviewType是一个与Post没有关系的模型,所以我可以直接使用post.reviewType访问它。一个post 有几个reviews。评论有reviewType。但我必须在组合框中显示所有reviewTypes。
无论如何,model 钩子不会被调用,我无法从PostReviewController 访问this.get('reviewTypes')。我知道beforeModel 或afterModel 挂钩用于此目的:当route 是从link-to 而不是直接从浏览器URL 访问时,将额外的models 传递给controller。该文档没有显示您如何做到这一点!知道方法的请赐教!
谢谢!
【问题讨论】:
标签: ember.js