Uviews没有连接到控制器

gul*_*ria 2 handlebars.js ember.js

Ember有一个Application,它有ApplicationView,ApplicationController和'application'命名模板和'main'命名插座,所有这些都自动连接.例如.

App.ApplicationView = Ember.View.extend();
Run Code Online (Sandbox Code Playgroud)

App.ApplicationController = Ember.Controller.extend();
Run Code Online (Sandbox Code Playgroud)

因此,每当我的应用程序模板呈现其默认控制器时,它都是自动实例

App.ApplicationController
Run Code Online (Sandbox Code Playgroud)

我可以在模板中访问其属性.但是为什么它不适用于其他视图和控制器,即如果我有

App.SongView = Em.View.extend()
Run Code Online (Sandbox Code Playgroud)

和App.SongController = Em.Controller.extend()这两个不连接.我可以使用任何属性

App.SongController
Run Code Online (Sandbox Code Playgroud)

在我的歌曲模板中.
我可以使用像:

{{view App.SongView}}
Run Code Online (Sandbox Code Playgroud)

并在模板中:

<script type='text/x-handlebars' data-template-name='song'>
    {{name}}
</script>
Run Code Online (Sandbox Code Playgroud)

如果我在App.SongController中有一个名称属性,那么它不会被拾取,因为它没有连接到视图.虽然我可以这样做

{{view App.SongView controllerBinding='App.songController'}}
Run Code Online (Sandbox Code Playgroud)

但这需要我的js文件中的App.songController实例,并且使用这种方法我们将控制器硬编码到模板.
最好的方法是什么?

更新 我也在这里附上一个js小提琴我的问题:http: //jsfiddle.net/anshulguleria/K6KPJ/

Yeh*_*atz 5

如果要渲染模板及其关联的控制器和视图,可以使用该{{render}}模板.它的工作方式this.render与路由器类似.

{{render "song" song}}
Run Code Online (Sandbox Code Playgroud)

这个例子将呈现song与实例模板App.SongControllerApp.SongView.它将song控制器设置为当前上下文中model的值song.

这是一个有效的JSBin,它说明了这是如何工作的.