3.11 Templates --Rendering with Helpers
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命名模板。
- 设置相应controller的model。
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的更多相关文章
- 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 ...
- Ember.js学习教程 -- 目录
写在前面的话: 公司的新项目需要用到Ember.js,版本为v1.13.0.由于网上关于Ember的资料非常少,所以只有硬着头皮看官网的Guides,为了加深印象和方便以后查阅就用自己拙劣的英语水平把 ...
- Handlebars.js,Json+ajax+拼html
英文版:http://handlebarsjs.com./ 原文链接:http://www.cnblogs.com/diligenceday/p/4105229.html, http://segmen ...
- Magento架构分析,Magento MVC 设计分析
Magento架构分析,Magento MVC 设计分析 分类:Magento 标签:Magento MVC.Magento架构 669人浏览 Magento 采用类似 JAVA的架构,其扩展与稳定性 ...
- WPF解析Word为图片
偶遇需要解析Word为单张图,此做 http://git.oschina.net/jiailiuyan/OfficeDecoder using System; using System.Collect ...
- Linux第二篇【系统环境、常用命令、SSH连接、安装开发环境】
系统环境 我们知道Windows的出色就在于它的图形界面那一块,而Linux对图形界面的支持并不是那么友好-其实我们在Windows下对图形界面进行的操作都是得装换成命令的方式的! 当然了,我们在Ub ...
- DirectX11 With Windows SDK--00 目录
前言 (更新于 2019/4/10) 从第一次接触DirectX 11到现在已经有将近两年的时间了.还记得前年暑假被要求学习DirectX 11,在用龙书的源码配置项目运行环境的时候都花了好几天的时间 ...
- 【转】Beginning Game Programming v2.0
Beginning Game Programming v2.0 Last Updated 8/19/18 Greetings everyone, welcome to the ground up re ...
- Browser Page Parsing Details
Browser Work: 1.输入网址. 2.浏览器查找域名的IP地址. 3. 浏览器给web服务器发送一个HTTP请求 4. 网站服务的永久重定向响应 5. 浏览器跟踪重定向地址 现在,浏 ...
随机推荐
- swift - 利用UIDatePicker实现定时器的效果
效果图如下: 可以通过UIDatePicker调整倒计时的时间,然后点击UIButton开始倒计时,使用NSTimer进行倒计时的时间展示,我是声明了一个label也进行了标记, 然后点击按钮开始倒计 ...
- 【python】一次执行多个linux命令
方法:多个命令之间用“;”进行连接即可:
- Nginx(三)-- 配置文件之日志管理
1.日志文件的默认存放位置 默认的日志文件存放位置在:nginx/logs/ 文件夹下,logs文件夹下有:access.log error.log nginx.pid 文件 2.nginx. ...
- VS2015编译CURL7.54.0源码
2018.8.24找到一种新途径,运行curl-master\projects\generate.bat,然后curl-master\projects\Windows\VC14\curl-all.sl ...
- 关于MCU的烧录,下载与其他接口的比较(二)
单片机应用系统由硬件和软件组成,软件的载体是硬件的程序存储器,程序存储器采用只读存储器,这种存储器在电源关闭后,仍能保存程序,在系统上电后,CPU可取出这些指令重新执行.只读存储器(Read Only ...
- php 关于日期的知识总结
1.UNIX时间戳 time() echo time(); 2.UNIX时间戳转换为日期用函数: date() 一般形式:date(); 即 echo date(date('Y-m-d H:i:s ...
- poj_1743 后缀数组
题目大意 给定一串数字,长度为N.定义数字中的某个连续的子串为一个"theme",只要子串满足: (1)长度 >= 5 (2)和该子串相同或者该子串的“变种串”在整串数字中出 ...
- 2.5 CMMI2级——配置管理(Configuration Management)
我们先需要回答,什么是 配置管理? 这个问题好难回答,我们可以找到很多解释,但真正理解配置管理的人可能不多. 配置管理的概念非常多,我们可不愿意做理论家,我们是非常务实的,我们先看看,如果没有有效的配 ...
- 2012Noip提高组Day1 T3 开车旅行
题目描述 小 A 和小 B 决定利用假期外出旅行,他们将想去的城市从 1 到 N 编号,且编号较小的 城市在编号较大的城市的西边,已知各个城市的海拔高度互不相同,记城市 i 的海拔高度为 Hi,城市 ...
- C# 文件夹的常用操作
C#获取文件夹下的所有文件的文件名 string path = @"E:\微课视频大于200M"; DirectoryInfo folder = new DirectoryInfo ...