在控制器中,我目前正在这样做:
controller.transitionTo( 'listing', App.Listings.find(1) );
这很好用。我想知道的是,是否有办法从控制器内访问另一个控制器的模型,这样我就不需要引用'App。',因为这似乎不是Ember推荐的最佳实践。我知道有一个modelFor()但它似乎只在路由中工作。
答案 0 :(得分:2)
模型设置为控制器的内容,因此在您的控制器中,模型是内容。 (除非你在路线中覆盖你的controllerFor()方法)。
然后在您的控制器中,您应该定义一个needs数组,它列出了您希望此控制器可以访问的控制器实例(而不是类)的名称。
因此,对于一个可以访问PostController的CommentsController,您可以在CommentsController定义中以这种方式定义它:
needs: ['post']
然后通过controllers.post(你不需要使用模型)在这个控制器中可用如果你的控制器是ObjectController或ArrayController的一个实例,那么你甚至不需要担心转到内容,控制器将代理您的内容/模型。
请注意,发布关系的评论由路由器决定(具体说明您的资源和路由的定义方式)。
此外,阅读需求的良好起点(源代码之外):http://darthdeus.github.com/blog/2013/01/27/controllers-needs-explained/