Uviews没有连接到控制器

时间:2013-01-18 07:23:40

标签: ember.js handlebars.js

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

App.ApplicationView = Ember.View.extend();

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

所以每当我的应用程序模板呈现其默认控制器时,都是

的自动实例
App.ApplicationController

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

App.SongView = Em.View.extend()

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

的任何属性
App.SongController

在我的歌曲模板中 我可以使用如下:

{{view App.SongView}}

并在模板中:

<script type='text/x-handlebars' data-template-name='song'>
    {{name}}
</script>

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

{{view App.SongView controllerBinding='App.songController'}}

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

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

1 个答案:

答案 0 :(得分:5)

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

{{render "song" song}}

此示例将使用songApp.SongController的实例呈现App.SongView模板。它会将song控制器的model设置为当前上下文中song的值。

以下是working JSBin,说明了其工作原理。