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/
如果要渲染模板及其关联的控制器和视图,可以使用该{{render}}模板.它的工作方式this.render与路由器类似.
{{render "song" song}}
Run Code Online (Sandbox Code Playgroud)
这个例子将呈现song与实例模板App.SongController和App.SongView.它将song控制器设置为当前上下文中model的值song.
这是一个有效的JSBin,它说明了这是如何工作的.
| 归档时间: |
|
| 查看次数: |
262 次 |
| 最近记录: |