- Ember.js 指南
- 入门指南 - 介绍
- 入门指南 - 应用规划
- 入门指南 - 创建静态页面
- 入门指南 - 获取Ember.js和相应依赖
- 入门指南 - 添加第一个路由与模板
- 入门指南 - 建立模型
- 入门指南 - 使用静态数据
- 入门指南 - 显示模型数据
- 入门指南 - 显示模型的完成状态
- 入门指南 - 创建新的模型实例
- 入门指南 - 标记模型为完成或未完成
- 入门指南 - 显示未完成待办事项的数量
- 入门指南 - 切换显示和编辑状态
- 入门指南 - 接受修改
- 入门指南 - 删除模型
- 入门指南 - 添加子路由
- 入门指南 - 显示未完成待办事项
- 入门指南 - 显示已完成待办事项
- 入门指南 - 显示所有待办事项
- 入门指南 - 添加移除所有已完成待办事项的按钮
- 入门指南 - 提示所有待办事项已完成
- 入门指南 - 切换已完成和未完成待办事项
- 入门指南 - 更换FixtureAdapter
- 获取 Ember - 获取Ember
- 概念 - 核心概念
- 概念 - 命名惯例
- 对象模型 - 类与实例
- 对象模型 - 计算属性
- 对象模型 - 计算属性和带@each的集合数据
- 对象模型 - 观察器
- 对象模型 - 绑定
- 对象模型 - 重新打开类和实例
- 对象模型 - 绑定,观察器,计算属性:如何选择?
- 应用 - 介绍
- 模板 - 应用模板
- 模板 - Handlebars基础
- 模板 - 条件表达式
- 模板 - 显示项目列表
- 模板 - 切换作用域
- 模板 - 绑定元素属性
- 模板 - 绑定元素类名称
- 模板 - 链接
- 模板 - 操作
- 模板 - 输入助手
- 模板 - 开发助手
- 模板 - 用助手来渲染
- 模板 - 编写助手方法
- 路由 - 介绍
- 路由 - 定义路由
- 路由 - 生成的对象
- 路由 - 指定路由的模型
- 路由 - 设置控制器
- 路由 - 渲染模板
- 路由 - 重定向
- 路由 - 指定地址API
- 路由 - 查询参数
- 路由 - 异步路由
- 路由 - 加载中/错误子状态
- 路由 - 阻止和重试过渡
- 组件 - 介绍
- 组件 - 定义组件
- 组件 - 传递属性
- 组件 - 包裹内容
- 组件 - 自定义组件元素
- 组件 - 使用Action处理用户交互
- 组件 - 从组件发送操作给应用
- 控制器 - 介绍
- 控制器 - 代表单一模型
- 控制器 - 代表多模型
- 控制器 - 管理控制器间的依赖
- 模型 - 介绍
- 模型 - 定义模型
- 模型 - 创建和删除记录
- 模型 - 将记录推入仓库
- 模型 - 持久化记录
- 模型 - 查询记录
- 模型 - 使用记录
- 模型 - 使用Fixture
- 模型 - 连接HTTP服务器
- 模型 - 处理元数据
- 模型 - 自定义适配器
- 模型 - 常见问题
- 视图 - 介绍
- 视图 - 定义视图
- 视图 - 处理事件
- 视图 - 在模板中插入视图
- 视图 - 为视图添加布局
- 视图 - 自定义视图元素
- 视图 - 内置视图
- 视图 - 手动管理视图层级
- 枚举 - 介绍
- 测试 - 介绍
- 测试 - 集成测试
- 测试 - 测试助手
- 测试 - 测试用户交互
- 测试 - 单元测试
- 测试 - 单元测试基础
- 测试 - 测试组件
- 测试 - 测试控制器
- 测试 - 测试路由
- 测试 - 测试模型
- 测试 - 自动化测试
- 配置Ember.js - 禁用基本类型扩展
- 配置Ember.js - 嵌入式应用
- 配置Ember.js - 特性标识
- Cookbook - 简介
- Cookbook - 用户界面与交互
- Cookbook - 事件处理和数据绑定
- Cookbook - 助手与组件
- Cookbook - 使用对象
- 理解Ember.js - 视图层
- 理解Ember.js - 管理异步
- 理解Ember.js - 模板自动更新
- 理解Ember.js - 调试
- 理解Ember.js - 运行循环
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
模板 - 链接
英文原文: http://emberjs.com/guides/templates/links/
链接 ({{link-to}}
助手)
你可以使用如下的方式创建一个指向一个路由的链接:
1 2 3 4 5 | App.Router.map(function() { this.resource("photos", function(){ this.route("edit", { path: "/:photo_id" }); }); }); |
1 2 3 4 5 6 7 | {{! photos.handlebars }} <ul> {{#each photo in photos}} <li>{{#link-to 'photos.edit' photo}}{{photo.title}}{{/link-to}}</li> {{/each}} </ul> |
如果photos
模板对应的模型拥有三张照片,那么,被渲染的HTML内容将如下所示:
1 2 3 4 5 | <ul> <li><a href="/photos/1">Happy Kittens</a></li> <li><a href="/photos/2">Puppy Running</a></li> <li><a href="/photos/3">Mountain Landscape</a></li> </ul> |
当被渲染的链接与当前路由匹配时,并且传入{{link-to}}助手的是相同的对象实例,那么链接的class被设置为active。
{{link-to}}
助手可以接收以下三个参数:
- 路由名称。在上面例子中,可以是
index
,photos
或者photos.edit
。 - 每个动态段最多对应一个模型。默认情况下,Ember.js将使用对应对象的
id
属性来替换动态段。 如果没有模型可以传给助手,也可以用一个ID值来取代。这个值被用来替换路由的动态段,并确保model
钩子被触发。 - 此外,我们也可以提供一个链接名称绑定到
a
标签的title
属性。
1 2 3 4 5 | {{! photos.handlebars }} {{#link-to 'photo.edit' 1}} First Photo Ever {{/link-to}} |
多动态段示例
如果多个路由是互相嵌套的,那么你可以为每个动态段提供一个模型或者模型标识符,如下所示:
1 2 3 4 5 6 7 8 | App.Router.map(function() { this.resource("photos", function(){ this.resource("photo", { path: "/:photo_id" }, function(){ this.route("comments"); this.route("comment", { path: "/comments/:comment_id" }); }); }); }); |
1 2 3 4 5 6 7 | {{! photoIndex.handlebars }} <div class="photo"> {{body}} </div> <p>{{#link-to 'photo.comment' primaryComment}}Main Comment{{/link-to}}</p> |
如果只指定了一个模型,其将用于代表最内层的动态段:comment_id
,而:photo_id
将使用当前的photo
对象。
此外,你还可以同时给{{link-to}}
助手指定一张照片和一条评论,如下所示:
1 2 3 4 5 | <p> {{#link-to 'photo.comment' nextPhoto primaryComment}} Main Comment for the Next Photo {{/link-to}} </p> |
在上述示例中,PhotoRoute
的模型钩子的参数会包含params.photo_id = 5
。CommentRoute
的model
钩子不会执行,因为传入了一个comment
段的模型对象。评论的ID会根据CommentRoute
的serialize
钩子来填写URL。
给链接添加附加属性
当生成一个链接时,有时候还需要为其添加附加属性。通过link-to
助手的附加参数,可以完成该功能:
1 2 3 | <p> {{link-to 'Edit this photo' 'photo.edit' photo class="btn btn-primary"}} </p> |
大部分HTML属性如class
和rel
都可以这样来添加。当添加样式类名时,Ember还会添加ember-view
和可能的active
样式类。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论