为什么路由和控制器类而不是对象?

时间:2015-02-23 11:35:36

标签: ember.js

路由和控制器都是单例类,那么为什么不只是做Ember.Route.create()或Ember.Controller.create()?

2 个答案:

答案 0 :(得分:1)

这只是猜测,但我想是因为这种方式更加通用。是的,控制器,路线和单身现在,但它们可能并非总是如此。如果Ember明天决定控制器不再需要单身,那么你就不必改变你宣布控制器的方式。 (我认为在容器中甚至可能有一种方法可以使它成为你的控制器和路径而不是单身。我不会推荐它。)

还有一些其他较小的好处。您可以扩展类而不是对象,因此将它们声明为类允许代码重用。此外,您无法在创建时声明计算属性,因此您无论如何都必须执行Ember.Controller.extend().create()

答案 1 :(得分:0)

每当我们定义一个新的路由或控制器时,我们基本上就是创建该路由或控制器的新实例。我们使用create方法来实现它,这样我们就可以在需要时覆盖任何方法钩子。因此,对于每个路由和控制器,我们有不同的实例(不是单个实例)。在Ember应用程序的情况下,我们使用create方法,因为我们只能有一个应用程序实例,但是我们可以有多个路径,控制器和视图,所以我们使用extend方法。