如何访问"generated application controller"?在 Ember

How to access a "generated application controller"? in Ember

在我的 HTML 文件中我有:

<script type="text/x-handlebars">
    //some code
    {{outlet}}
</script>

它一直作为我所有模板的布局,但它没有我制作的任何控制器,所以 Ember 生成了一个。

我的问题是如何访问此车把的控制器?

生成的应用控制器official documentation 上说:

The application template is the default template that is rendered when your application starts.

这就是我希望能够访问的内容。我真正想做的只是添加它:

needs: ['someController']

PS:找了一下之后,我尝试在控制器文件夹中创建一个文件“application.js”,但似乎不是这个。

您可以使用简单的 IndexRoute.

创建 application.jsroute.js 文件
App = Ember.Application.create();

App.IndexRoute = Ember.Route.extend({
    model: function() {
        return ['red', 'yellow', 'blue'];
    }
});

并用模板替换您的{{outlet}}

<ul>
{{#each item in model}}
  <li>{{item}}</li>
{{/each}}
</ul> 

看看这个初学者示例:http://emberjs.jsbin.com/koziwatacu/1/edit

官方文档:http://guides.emberjs.com/v1.11.0/templates/the-application-template/

在你的情况下,我认为你正在寻找的是在控制器文件夹中制作一个 application.js 文件,如下所示:

App.ApplicationController = Ember.ObjectController.extend({
    needs: ['someController'],
});

并且不要忘记将其包含在您的 html 文件中。

<script type="text/x-handlebars">
    //some code
    {{outlet}}
</script>

此脚本在 HTML 中定义应用程序的主模板。通常您需要为您的脚本命名,但这对于 Application/index 不是必需的 - 请参阅 documentation.

同样来自文档:"By default, your top-most application template is bound to your ApplicationController:"

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

所以如果你需要为应用程序定制一些东西,而不是使用自动生成的控制器,你必须创建一个显式的;在那里你可以添加 needs: ['someController'].