2

Ember 有一个应用程序,它有 ApplicationView、ApplicationController 和名为模板的“应用程序”和名为插座的“主”,所有这些都自动连接。例如。

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 中有一个 name 属性,那么它不会被拾取,因为它没有连接到视图。虽然我可以这样做

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

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

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

4

1 回答 1

5

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

{{render "song" song}}

此示例将使用和song的实例呈现模板。它将控制器设置为当前上下文中的值。App.SongControllerApp.SongViewsongmodelsong

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

于 2013-01-18T07:46:49.083 回答