Ember提供几个辅助器允许你使用不同的方法渲染模板(render templates)。

一、The {{partial}} Helper

{{partial}}以呈现的模板作为参数,并在这里呈现模板。

{{partial}}不改变上下文或作用域。它简单的将给定的模板放置到当前作用域中。

app/templates/author.hbs

Written by {{author.firstName}} {{author.lastName}}

app/templates/post.hbs

<h1>{{title}}</h1>
<div>{{body}}</div>
{{partial "author"}}

输出:

<div>
<h1>Why You Should Use Ember.js</h1>
<div>Because it's awesome!</div>
Written by Yehuda Katz
</div>

二、The {{render}} Helper

1. {{render}}取两个参数:

  • 第一个参数描述设定的上下文。
  • 可选的第二个参数是model,如果提供了它将被传递到controller

2. {{render}做了几件事:

  • 当没有提供模型时,它会得到相应controller
  • 当提供一个模型时,它会得到一个唯一的controller
  • 使用controller命名模板。
  • 设置相应controllermodel

3. 稍微修改下上面的例子:

app/templates/author.hbs

Written by {{firstName}} {{lastName}}.
Total Posts: {{postCount}}

app/templates/post.hbs

<h1>{{title}}</h1>
<div>{{body}}</div>
{{render "author" author}}

app/controllers/author.js

export default Ember.Controller.extend({
postCount: Ember.computed('model.posts.[]', function() {
return this.get('model.posts.length');
})
})

在例子中,render将会:

  • 使用相应的模板(例子中默认为"author")
  • 获得或者生成AuthorController的单例
  • 设置AuthorController's model为传递给render的第二个参数,这里传递的是author对象。
  • 使用上一步中创建的上下文在适当的位置渲染模板。

4.{{render}}{{outlet}}的区别

{{render}}不要求一个匹配路由的存在。

{{render}}{{outlet}}有一点类似。都告诉Ember放入页面这部分东西。

{{outlet}}:路由器确定路由,并设置适当的控制器/视图/模型。

{{render}}:你直接或者间接的指定适当的控制器/视图/模型。

注意:当没有指定model时,对同一个路由来说{{render}}不能被多次调用。

三、Comparison Table(比较表)

1. 一般的

Helper Template Model Controller
{{partial}} Specified Template Current Model Current Controller
{{render}} Template Specified Model Specified Controller

2. 特定的

Helper Template Model Controller
{{partial "author"}} templates/author.hbs models/post.js controllers/post.js
{{render "author" author}} templates/author.hbs models/author.js controllers/author.js

3.11 Templates --Rendering with Helpers的更多相关文章

  1. Professional C# 6 and .NET Core 1.0 - Chapter 41 ASP.NET MVC

    What's In This Chapter? Features of ASP.NET MVC 6 Routing Creating Controllers Creating Views Valida ...

  2. Ember.js学习教程 -- 目录

    写在前面的话: 公司的新项目需要用到Ember.js,版本为v1.13.0.由于网上关于Ember的资料非常少,所以只有硬着头皮看官网的Guides,为了加深印象和方便以后查阅就用自己拙劣的英语水平把 ...

  3. Handlebars.js,Json+ajax+拼html

    英文版:http://handlebarsjs.com./ 原文链接:http://www.cnblogs.com/diligenceday/p/4105229.html, http://segmen ...

  4. Magento架构分析,Magento MVC 设计分析

    Magento架构分析,Magento MVC 设计分析 分类:Magento 标签:Magento MVC.Magento架构 669人浏览 Magento 采用类似 JAVA的架构,其扩展与稳定性 ...

  5. WPF解析Word为图片

    偶遇需要解析Word为单张图,此做 http://git.oschina.net/jiailiuyan/OfficeDecoder using System; using System.Collect ...

  6. Linux第二篇【系统环境、常用命令、SSH连接、安装开发环境】

    系统环境 我们知道Windows的出色就在于它的图形界面那一块,而Linux对图形界面的支持并不是那么友好-其实我们在Windows下对图形界面进行的操作都是得装换成命令的方式的! 当然了,我们在Ub ...

  7. DirectX11 With Windows SDK--00 目录

    前言 (更新于 2019/4/10) 从第一次接触DirectX 11到现在已经有将近两年的时间了.还记得前年暑假被要求学习DirectX 11,在用龙书的源码配置项目运行环境的时候都花了好几天的时间 ...

  8. 【转】Beginning Game Programming v2.0

    Beginning Game Programming v2.0 Last Updated 8/19/18 Greetings everyone, welcome to the ground up re ...

  9. Browser Page Parsing Details

    Browser Work: 1.输入网址.  2.浏览器查找域名的IP地址.  3. 浏览器给web服务器发送一个HTTP请求  4. 网站服务的永久重定向响应  5. 浏览器跟踪重定向地址 现在,浏 ...

随机推荐

  1. SpringBoot(零)-- 工程创建

    一.约定优于配置 二.快速创建SoringBoot项目 地址:http://start.spring.io/ 三.在步骤二中,创建好了SpringBootDemo 项目,导入Eclipse 自定义ba ...

  2. Dotnet listview

    属性-----------------------------------------------------------------------------------------  .Access ...

  3. PHP之命名空间

    前面的话 从广义上来说,命名空间是一种封装事物的方法.在很多地方都可以见到这种抽象概念.例如,在操作系统中目录用来将相关文件分组,对于目录中的文件来说,它就扮演了命名空间的角色.这个原理应用到程序设计 ...

  4. MQTT协议笔记之订阅

    前言 记忆不太好的时候,只能翻看以前的文章/笔记重新温习一遍,但找不到MQTT协议有关订阅部分的描述,好不容易从Evernote中找到贴出来,这样整个MQTT协议笔记,就比较齐全了. SUBSCRIB ...

  5. MQTT的学习研究(十五) MQTT 和android整合文章

    详细参考:  How to Implement Push Notifications for Android http://tokudu.com/2010/how-to-implement-push- ...

  6. CSS- ie6,ie7,ie8 兼容性写法,CSS hack写法

    css ie6,ie7,ie8 兼容性写法,CSS hack写法 margin-bottom:40px;       /*ff的属性*/margin-bottom:140px\9;    /* IE6 ...

  7. 借助腾讯云CDN开启全站https及问题解决分享

    版权声明:本文由张戈原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/78 来源:腾云阁 https://www.qcloud ...

  8. 删除编辑文件警告Swap file “…” already exists!

    Linux下多个用户同时编辑一个文件,或编辑时非正常关闭,再下次编辑打开文件时均为显示如下警告信息: Swap file "test.xml.swp" already exists ...

  9. Java初学者笔记一:元类、获取类型、枚举

    零.绪论: 2018年新年伊始,学习Java的冲动越来越强烈,毕竟以后无论是做安全开发还是安全研究都必不可少的掌握这门语言,所以在不断完善Python作为脚本语言的主语言的情况下觉得学习Java作为高 ...

  10. c# winform窗体边框风格的设计

    1.首先,窗体的FormBorderStyle设置成None,不要控制边框. 2.然后,TransparencyKey和BackColor颜色设置成相同的,这样,窗体就透明了. 3.最后,窗体的拖动 ...