2

在控制器中,我目前正在这样做:

controller.transitionTo( 'listing', App.Listings.find(1) );

这工作得很好。我想知道的是,是否有一种方法可以从控制器内访问另一个控制器的模型,这样我就不需要引用“App.”,因为这似乎不是 Ember 推荐的最佳实践。我知道有一个 modelFor() 但它似乎只在路线中工作。

4

1 回答 1

2

模型设置为控制器的内容,因此在您的控制器中模型就是内容。(除非您在路线中覆盖您的 controllerFor() 方法)。

然后在您的控制器中,您应该定义一个需求数组,其中列出了您希望此控制器有权访问的控制器实例(而不是类)的名称。

因此,要让 CommentsController 能够访问 PostController,您可以在 CommentsController 定义中以这种方式定义它:

needs: ['post']

然后这可以通过 controllers.post 在这个控制器中使用(你不需要使用 model )如果你的控制器是 ObjectController 或 ArrayController 的一个实例那么你甚至不需要担心去内容,控制器将代理到适合您的内容/模型。

请注意,评论与发布关系是由路由器确定的(特别是您的资源和路由是如何定义的)。

此外,阅读需求的一个很好的起点(在源代码之外):http ://darthdeus.github.com/blog/2013/01/27/controllers-needs-explained/

于 2013-02-12T17:47:30.603 回答