3

我知道这个问题可能看起来有点重复,但是这个问题的其他版本已经过时了,并且某些内容(例如视图)甚至不再是 ember 的一部分。

作为一名使用 EmberJS 的前端开发人员,我实习大约 4 周。我仍然不明白什么时候最好在控制器上使用路由,反之亦然。在我看来,路由中的每个动作也可以在控制器中使用。

我最近听到的一件事是 ember 路由应该是无状态的,而控制器应该是有状态的。

控制器和路由的当前状态是什么。什么时候应该使用一个而不是另一个?

4

1 回答 1

6

考虑以下示例,以简单的术语和当前上下文来理解控制器(或路由或任何东西)的状态——假设您有一个包含三个选项卡的页面(如表单);每个选项卡都可以被视为一个状态 - 它会根据状态(或您所在的选项卡)调用不同的组件。现在,如果您碰巧由于某种原因返回并再次点击表单链接,您会看到状态将保持不变。(如果您在回击时位于选项卡 2 上,则在返回表单时,您仍将位于选项卡 2 上)。

所以为了维护这些状态,控制器是要走的路,因为它们是单例的。Route 会丢失该信息,并重新开始。所以基本上你在控制器中的变量/对象将定义“状态”。

Route-actions 可以像控制器操作一样轻松使用 - 请参阅https://github.com/DockYard/ember-route-action-helper。因此,如果您的这条路线的模板只是直接使用模型作为对象,并且您不需要维护“状态”,那么您几乎可以不用控制器。

但是,如果您的模板使用需要操作的变量,则需要控制器。

希望这可以帮助!

于 2017-05-18T21:22:18.247 回答