Ember.js 在EmberJS中何时使用控制器与路由?

Ember.js 在EmberJS中何时使用控制器与路由?,ember.js,ember-router,ember-controllers,Ember.js,Ember Router,Ember Controllers,我知道这个问题可能看起来有点重复,但是这个问题已经过时了,一些内容(比如视图)甚至不再是ember的一部分 我作为一名前端开发人员在EmberJS实习了大约4周。我仍然不明白什么时候使用控制器上的路由更好,或者反之亦然。在我看来,路线中的每个动作也可以在控制器中使用 我最近听到的一件事是,灰烬路线应该是 控制器和路由的当前状态是什么。什么时候应该使用一个而不是另一个?考虑以下示例,以简单的术语和当前上下文理解控制器(或路由,或任何东西)的状态——假设您有一个包含三个选项卡的页面(如表单);每个选

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

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

我最近听到的一件事是,灰烬路线应该是


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

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

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

路由操作与控制器操作一样易于使用-请参阅。因此,如果此路由的模板只是直接使用模型作为对象,并且不需要维护“状态”,那么基本上可以不用控制器

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


希望这有帮助

有状态与无状态绝对是一个不错的选择。还要知道,ember API的这一部分是历史上发展起来的,可能不是最符合逻辑的。奇怪的是,就操作而言,您可以从控制器或路由触发操作。例如,您可以在控制器中使用this.send()触发路由操作,或者在路由中使用this.send()触发控制器操作。我个人使用路由操作进行路由,控制器操作用于路由之外的所有操作。这确实澄清了为什么控制器很重要。如果我一天没有达到最高限额,我会提高投票率。