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/
答案 0 :(得分:5)
如果要渲染模板及其关联的控制器和视图,可以使用{{render}}
模板。它的工作方式与路由器中的this.render
类似。
{{render "song" song}}
此示例将使用song
和App.SongController
的实例呈现App.SongView
模板。它会将song
控制器的model
设置为当前上下文中song
的值。
以下是working JSBin,说明了其工作原理。