我是否必须为每个Ember.js应用程序显式创建`ApplicationView`和`ApplicationController`?

时间:2012-10-03 15:47:45

标签: ember.js

来自Trek's tutorial:

  

您的应用程序必须具有ApplicationView属性。一个例子   这个类将为您创建并插入到应用程序中   将层次结构视为根视图。

教程给出了这个示例代码:

App.ApplicationView = Ember.View.extend({
  templateName: 'application'
});

App.ApplicationController = Ember.Controller.extend();

ApplicationViewApplicationController有什么特别之处?它们的特定名称是保留的,必须通过转换来使用,或者路由器引用它们的方式有什么特别之处吗?

据我所知,Ember的一个原则是消除样板代码。所以我猜测还有更多东西可以为每个应用程序明确创建这两个视图作为起点 - 否则Ember会在幕后为我制作它们。

要重新解释我的问题,是什么让ApplicationViewApplicationController在Ember应用程序中变得特别。我是否需要为每个应用程序显式创建它们?如果是,我是否需要按照约定命名它们?

注意:我使用的是ember-latest

1 个答案:

答案 0 :(得分:5)

Ember.js试图遵循约定优于配置的编程理念。因此,有些事情需要特别命名并遵循正确的套管规则。在调用App.initialize()后,您的应用会在自己App.ApplicationView上查找该属性。然后,您的应用会呈现此视图,将其插入dom并自动创建App.ApplicationController的实例,并将其设置为ApplicationView的渲染上下文。这意味着您ApplictationController中的所有媒体资源都可以在ApplicationView中绑定,只需在视图中引用它们即可。

如果您在没有App.initialize()App.ApplicationView的情况下致电App.ApplicationController,则会发出错误消息,通知您必须创建它们。

ApplicationViewApplicationController是您的余烬应用程序的组成部分,必须存在。 Ember是一个MVC框架,ApplicationView是你的根V,ApplicationController是你的根C.可能很想尝试使用像ember这样的框架来获得你想要的东西,但只需要一点点更多的工作,你将有一个更强大,易于使用的应用程序,试图挑选功能。