首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Ember.js和Handlebar,将模板绑定到类视图与视图实例之间有什么区别?

使用Ember.js和Handlebar,将模板绑定到类视图与视图实例之间有什么区别?
EN

Stack Overflow用户
提问于 2012-10-01 02:07:36
回答 1查看 2.5K关注 0票数 3

Case I.Binding模板到视图实例。

例如,假设我有一个模板:

代码语言:javascript
复制
    <script type="text/x-handlebars" data-template-name="instance-template">
        <b> Name: </b> {{ name }}
    </script>

然后,我可以将一个视图实例绑定到它并附加到文档中(为了简单起见,参数名称是在视图中声明的,而不是绑定到某个控制层):

代码语言:javascript
复制
App.instanceView = Ember.View.create({
    templateName: 'instance-template',
    name: 'hello world'
}).append();

这里的幕后到底发生了什么?通过指定模板名称,这个视图实例是否以某种方式获取了一个模板,并使用后台传递的参数对其进行编译?

案例II。将模板绑定到类视图,模板未命名。

但是,如果我想将一个模板绑定到一个类视图上,比如:

代码语言:javascript
复制
App.ViewClass = Ember.View.extend({
    name: 'hello world',
});

文档使用此表单的模板:

代码语言:javascript
复制
<script type="text/x-handlebars">
    {{ #view App.ClassView }}
        This part renders: {{ name }} 
    {{ /view }}
</script>

请注意,当我这样做时,由于某些原因,这不起作用。模板中的引号“This part renders:”实际呈现,但不呈现{{ name }}标记。我不知道为什么。

案例III.模板绑定到类视图,模板被命名。

此外,如果我将上面的模板命名为:

代码语言:javascript
复制
<script type="text/x-handlebars" data-template-name = 'class-template'>
    {{ #view App.ClassView }}
        This part renders: {{ name }} 
    {{ /view }}
</script>

并将视图更改为

代码语言:javascript
复制
App.ViewClass = Ember.View.extend({
    templateName: 'class-template',
    name: 'hello world',
});

什么都不会渲染。我再一次看不到这里发生了什么。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-01 05:09:42

Case 1 Yah差不多。视图正在呈现(我们假设上下文就是视图),那么当我们看到{{name}}时,它就等同于instanceView.get('name')

Case 2匿名模板不会更改上下文。当您在{{#view}}中定义一个模板时,上下文不会改变。要获得与{{#view}}帮助器一起使用的视图上下文,您需要使用view.name。例如:

代码语言:javascript
复制
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这个例子没有任何意义,可能会有一个断言失败(非最小化版本)。您正在定义一个使用模板的视图,然后在该模板内部使用匿名模板再次呈现相同的视图。如果这是你想要的意思,你能提供一个用例吗,因为可能有一种更简单的方法来完成你想要完成的事情。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12663684

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档