- 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/components/customizing-a-components-element/
默认情况下,每个组件是一个<div>
元素。如果使用开发工具查看渲染后的组件,将看到一个如下所示的DOM表示:
1 2 3 | <div id="ember180" class="ember-view"> <h1>My Component</h1> </div> |
通过使用Javascript创建一个Ember.Component
子类,可以自定义Ember生成的组件使用的元素类型,包括其属性和类名。
自定义元素
为了不使用div
,继承Ember.Component
并为其添加一个tagName
属性。这个属性可以是任何合法的HTML5标签。
1 2 3 | App.NavigationBarComponent = Ember.Component.extend({ tagName: 'nav' }); |
1 2 3 4 5 | {{! templates/components/navigation-bar }} <ul> <li>{{#link-to 'home'}}Home{{/link-to}}</li> <li>{{#link-to 'about'}}About{{/link-to}}</li> </ul> |
自定义类名
通过设置classNames
属性为一个字符串数组,可以指定组件元素的类名:
1 2 3 | App.NavigationBarComponent = Ember.Component.extend({ classNames: ['primary'] }); |
如果需要通过组件的属性来决定使用的类名,可以使用类名绑定。如果绑定一个布尔型属性,类名将根据该属性的值来决定是添加还是移除类名:
1 2 3 4 | App.TodoItemComponent = Ember.Component.extend({ classNameBindings: ['isUrgent'], isUrgent: true }); |
组件将渲染为:
1 | <div class="ember-view is-urgent"></div> |
如果isUrgent
变为false
,那么is-urgent
类名将被移除。
默认情况下,布尔属性的名称会用'-'来连接。使用分号可以自定义类名:
1 2 3 4 | App.TodoItemComponent = Ember.Component.extend({ classNameBindings: ['isUrgent:urgent'], isUrgent: true }); |
组件将渲染为:
1 | <div class="ember-view urgent"> |
除了为值为true
的添加自定义类名外,还可以在值为false
的时候来指定类名:
1 2 3 4 | App.TodoItemComponent = Ember.Component.extend({ classNameBindings: ['isEnabled:enabled:disabled'], isEnabled: false }); |
组件将渲染为:
1 | <div class="ember-view disabled"> |
另外,还可以通过定义classNameBindings
,实现只在属性为false
的时候添加类名:
1 2 3 4 | App.TodoItemComponent = Ember.Component.extend({ classNameBindings: ['isEnabled::disabled'], isEnabled: false }); |
组件将渲染为:
1 | <div class="ember-view disabled"> |
如果isEnabled
属性设置为true
,则不会添加类名:
1 | <div class="ember-view"> |
如果绑定的值是一个字符串,那么该值将作为类名,且不加任何修改:
1 2 3 4 | App.TodoItemComponent = Ember.Component.extend({ classNameBindings: ['priority'], priority: 'highestPriority' }); |
组件将渲染为:
1 | <div class="ember-view highestPriority"> |
自定义属性
通过attributeBindings
可以绑定属性到代表组件的DOM元素:
1 2 3 4 5 | App.LinkItemComponent = Ember.Component.extend({ tagName: 'a', attributeBindings: ['href'], href: "http://emberjs.com" }); |
也可以使用不同的命名属性来绑定这些属性:
1 2 3 4 5 | App.LinkItemComponent = Ember.Component.extend({ tagName: 'a', attributeBindings: ['customHref:href'], customHref: "http://emberjs.com" }); |
例子
下面是一个Todo应用的例子,展示了使用红色的背景来显示已完成的待办事项:
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论