我知道这个问题可能看起来有些重复但是other version of this question已经过时了,而且一些内容(例如视图)甚至不再是ember的一部分了。
作为与EmberJS合作的前端开发人员,我大约需要4周的实习时间。我仍然不明白何时在控制器上使用路径更好,反之亦然。在我看来,路线中的每个动作也可以在控制器中使用。
我最近听到的一件事是,余烬路线应为stateless where as controllers should be stateful。
控制器和路由的当前状态是什么。应该何时使用另一个?
答案 0 :(得分:5)
考虑以下示例,以简单的术语和当前上下文来理解控制器(或路由或任何东西)的状态 - 假设您有一个带有三个选项卡的页面(如表单);每个选项卡都可以视为一个状态 - 它会根据状态(或您所在的选项卡)调用不同的组件。现在,如果您因某种原因碰巧回去,再次点击表单链接,您会看到状态保持不变。 (如果你回到标签2时,在返回表格时,你仍然会在标签2上)。
因此,为了维持这些状态,控制器是可行的方式,因为它们是单身人士。路线将失去这些信息,并开始新鲜。所以基本上你的控制器中的变量/对象会定义'state'。
路由操作可以像控制器操作一样容易使用 - 请参阅https://github.com/DockYard/ember-route-action-helper。因此,如果此路径的模板只是直接使用模型作为对象,并且您不需要维护“状态”,那么几乎没有您的控制器。
但是如果您的模板使用需要操作的变量,则需要控制器。
希望这有帮助!