我应该何时在EmberJS中使用控制器与路由?

Cam*_*ron 3 ember.js ember-router ember-controllers

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

作为EmberJS的前端开发人员,我的实习期大约有4周。我仍然不知道何时最好在控制器上使用路由,反之亦然。在我看来,路由中的每个动作也可以在控制器中使用。

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

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

小智 5

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

因此,要保持这些状态,控制器是必经之路,因为它们是单例。Route会丢失该信息,然后重新开始。因此,基本上,控制器中的变量/对象将定义“状态”。

路由动作可以像控制器动作一样容易使用-参见https://github.com/DockYard/ember-route-action-helper。因此,如果此路线的模板只是直接使用模型作为对象,而无需维护“状态”,那么无需控制器就可以做很多事情。

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

希望这可以帮助!