Case I.Binding模板到视图实例。
例如,假设我有一个模板:
<script type="text/x-handlebars" data-template-name="instance-template">
<b> Name: </b> {{ name }}
</script>然后,我可以将一个视图实例绑定到它并附加到文档中(为了简单起见,参数名称是在视图中声明的,而不是绑定到某个控制层):
App.instanceView = Ember.View.create({
templateName: 'instance-template',
name: 'hello world'
}).append();这里的幕后到底发生了什么?通过指定模板名称,这个视图实例是否以某种方式获取了一个模板,并使用后台传递的参数对其进行编译?
案例II。将模板绑定到类视图,模板未命名。
但是,如果我想将一个模板绑定到一个类视图上,比如:
App.ViewClass = Ember.View.extend({
name: 'hello world',
});文档使用此表单的模板:
<script type="text/x-handlebars">
{{ #view App.ClassView }}
This part renders: {{ name }}
{{ /view }}
</script>请注意,当我这样做时,由于某些原因,这不起作用。模板中的引号“This part renders:”实际呈现,但不呈现{{ name }}标记。我不知道为什么。
案例III.模板绑定到类视图,模板被命名。
此外,如果我将上面的模板命名为:
<script type="text/x-handlebars" data-template-name = 'class-template'>
{{ #view App.ClassView }}
This part renders: {{ name }}
{{ /view }}
</script>并将视图更改为
App.ViewClass = Ember.View.extend({
templateName: 'class-template',
name: 'hello world',
});什么都不会渲染。我再一次看不到这里发生了什么。
发布于 2012-10-01 05:09:42
Case 1 Yah差不多。视图正在呈现(我们假设上下文就是视图),那么当我们看到{{name}}时,它就等同于instanceView.get('name')。
Case 2匿名模板不会更改上下文。当您在{{#view}}中定义一个模板时,上下文不会改变。要获得与{{#view}}帮助器一起使用的视图上下文,您需要使用view.name。例如:
App.ViewClass = Ember.View.extend({
name: 'hello world',
});
<script type="text/x-handlebars">
{{name}} <!-- lets pretend this is "something else" -->
{{#view App.ClassView}}
This part renders: {{name}} <!-- "something else" -->
{{view.name}} <!-- "hello world" -->
{{/view}}
</script>Case 3这个例子没有任何意义,可能会有一个断言失败(非最小化版本)。您正在定义一个使用模板的视图,然后在该模板内部使用匿名模板再次呈现相同的视图。如果这是你想要的意思,你能提供一个用例吗,因为可能有一种更简单的方法来完成你想要完成的事情。
https://stackoverflow.com/questions/12663684
复制相似问题