【问题标题】:Do I have to explicitly create an `ApplicationView` and an `ApplicationController` for every Ember.js application?我是否必须为每个 Ember.js 应用程序显式创建一个“ApplicationView”和一个“ApplicationController”?
【发布时间】:2012-10-03 15:47:44
【问题描述】:

来自Trek's tutorial:

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

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

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

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

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

据我了解,Ember 的一项原则是消除样板代码。所以我猜想为每个应用程序显式创建这两个视图作为起点还有更多的东西——否则 Ember 只会在幕后为我制作它们。

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

注意:我使用的是 ember-latest

【问题讨论】:

    标签: ember.js


    【解决方案1】:

    Ember.js 试图坚持约定优于配置的编程理念。因此,有些东西需要特别命名并遵循正确的大小写规则。在调用App.initialize() 时,您的应用程序会自行查找App.ApplicationView 的属性。然后,您的应用程序会渲染此视图,将其插入 dom 并自动创建 App.ApplicationController 的实例,将其设置为您的 ApplicationView 的渲染上下文。这意味着您的ApplictationController 中的任何属性都可以绑定到您的ApplicationView 中,只需在视图中引用它们即可。

    如果您在没有 App.ApplicationViewApp.ApplicationController 的情况下调用 App.initialize(),ember 将引发错误,通知您必须创建它们。

    ApplicationViewApplicationController 是您的 ember 应用程序的组成部分,并且必须存在。 Ember 是一个 MVC 框架,ApplicationView 是您的根 V,ApplicationController 是您的根 C。尝试使用 ember 之类的框架来处理您想要的部分可能很诱人,但只需多做一点工作就可以了将拥有一个更强大、更易于使用的应用程序,它会尝试挑选功能。

    【讨论】:

    • +1 以获得很好的解释。如果没有定义 App.ApplicationView,您是否有任何参考或示例代码显示 ember 会抛出错误?原因是到目前为止我还没有在我的任何 jsFiddles 中定义它,也没有看到错误。
    • 另外,我认为 ember-latest 通过将autoinit 设置为true,消除了调用App.initialize() 的需要。这对这种情况有影响吗?
    • @Aras 不,这不应该有效果。应用程序是自动初始化的,但始终需要 ApplicationView 和 ApplicationController
    猜你喜欢
    • 1970-01-01
    • 2020-11-18
    • 1970-01-01
    • 1970-01-01
    • 2020-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-25
    相关资源
    最近更新 更多