一、概述

默认的,每一个组件都基于一个<div>元素。如果你在开发者工具中查看一个渲染的组件,你将会看到一个像这样的DOM表示:

<div id="ember180" class="ember-view">
<h1>My Component</h1>
</div>

你可以为你的组件自定义Ember生成元素的类型,包括它的属性和类名,通过创建一个Ember.Component的子类。

二、Customizing the element

使用一个不是div的标签,Ember.Component的子类分配给它一个tagName属性。这个属性可以以任何有效的HTML5标签名称作为字符串。

app/components/navigation-bar.js

export default Ember.Component.extend({
tagName: 'nav'
});

app/templates/components/navigation-bar.hbs

<ul>
<li>{{#link-to 'home'}}Home{{/link-to}}</li>
<li>{{#link-to 'about'}}About{{/link-to}}</li>
</ul>

三、Customizing class names

1. 你也可以通过设置它的classNames属性为一个字符串数组来制定组件的元素的类名。

app/components/navigation-bar.js

export default Ember.Component.extend({
classNames: ['primary']
});

2. 如果你希望通过组件类型来确定类名,你可以使用类名绑定。如果你绑定一个布尔属性,类名将会根据这个值被添加或者被移除:

app/components/todo-item.js

export default Ember.Component.extend({
classNameBindings: ['isUrgent'],
isUrgent: true
});

这个组件将会被渲染为:

<div class="ember-view is-urgent"></div>

如果isUrgent被改为false,然后is-urgent类名会被移除。

3. 默认的,布尔属性的名字被dasherized。你可以通过一个""来自定义类名:

app/components/todo-item.js

export default Ember.Component.extend({
classNameBindings: ['isUrgent:urgent'],
isUrgent: true
}); 

者将被渲染为:

<div class="ember-view urgent">

4. 除了该值为true时自定义名称之外,你也可以在该值为false时指定一个类名:

app/components/todo-item.js

export default Ember.Component.extend({
classNameBindings: ['isEnabled:enabled:disabled'],
isEnabled: false
});

这将被渲染为:

<div class="ember-view disabled">

5. 你也可以指定一个类,它仅仅在值为false时被添加:

app/components/todo-item.js

export default Ember.Component.extend({
classNameBindings: ['isEnabled::disabled'],
isEnabled: false
});

将被渲染为:

<div class="ember-view disabled">

如果isEnabled属性被设置为true,不会添加类名:

<div class="ember-view">

6. 如果被绑定的属性值是一个字符串,这个值将会作为属性名被添加不会有任何更改:

app/components/todo-item.js

export default Ember.Component.extend({
classNameBindings: ['priority'],
priority: 'highestPriority'
});

渲染为:

<div class="ember-view highestPriority">

四、Customizing Attriburtes

你可以绑定属性到代表组件的DOM元素,利用attributeBindings

app/components/link-item.js

export default Ember.Component.extend({
tagName: 'a',
attributeBindings: ['href'],
href: "http://emberjs.com"
});

你也可以绑定这些属性attributes到不同的命名属性properties:

app/components/link-item.js

export default Ember.Component.extend({
tagName: 'a',
attributeBindings: ['customHref:href'],
customHref: "http://emberjs.com"
});

5.5 Components -- Customizing A Compnent's Element的更多相关文章

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

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

  2. 5.2 Components — Defining A Component

    一.概述 1. 为了定义一个组件,创建一个模板,它的名字以components/开头.为了定义一个新组件{{blog-post}},例如,创建一个components/blog-post模板. 2.注 ...

  3. (八)Knockout 组件 Components

    概述 :组件和自定义元素 Components 是将UI代码组织成自包含的.可重用的块的一种强大而干净的方法.他们: -可以表示单个控件/窗口小部件或应用程序的整个部分 -包含它们自己的视图,并且通常 ...

  4. 七、Vue组件库:Element、Swiper(轮播专用组件)

    一.vue的Element组件库 官网:https://element.eleme.cn/#/zh-CN 1.1安装 推荐安装方法: 首先要进入项目目录 cnpm i element-ui -S 或 ...

  5. [asp.net core] Tag Helpers 简介(转)

    原文地址 https://docs.microsoft.com/en-us/aspnet/core/mvc/views/tag-helpers/intro What are Tag Helpers? ...

  6. KnockoutJS 3.X API 第六章 组件(4) 自定义元素

    自定义元素提供了一种将组件注入视图的方便方法. 本节目录 介绍 例子 传递参数 父组件和子组件之间的通信 传递监控属性的表达式 将标记传递到组件中 控制自定义元素标记名称 注册自定义元素 备注1:将自 ...

  7. jquery easyui 1.4.1 API( CHM版)

    ChangeLog Bug The combogrid has different height than other combo components. fixed. datagrid: The r ...

  8. Tomcat Clustering - A Step By Step Guide --转载

    Tomcat Clustering - A Step By Step Guide Apache Tomcat is a great performer on its own, but if you'r ...

  9. JAXB - The Object Factory

    Usually hidden in the middle of the list of the classes derived from the types defined in an XML sch ...

随机推荐

  1. Entity FrameWork实现增、删、改、分页的数据层代码实现

    public bool AddEntity(Customer entity)//添加实体   {       MyHotelModelContainer hotelDB = new MyHotelMo ...

  2. TTCN中PTC的执行流程

    一些概念 Component(測试组件或者測试成分),TTCN接触下来最频繁的就是MTC(Main Test Component,主測试组件),在执行測试用例前,须要首先创建一个MTC.在testca ...

  3. Anfroid 在界面中显示图片 ImageView

    ImageView1.什么是ImageView是显示图片的一个控件2.ImageView属性android:src ImageView的内容颜色 android:background ImageVie ...

  4. KVC与Runtime结合使用(案例)及其底层原理

    一.KVC 的用法和实践 用法 KVC(Key-value coding)键值编码,顾名思义.额,简单来说,是可以通过对象属性名称(Key)直接给属性值(value)编码(coding)“编码”可以理 ...

  5. zookeeper集群的安装和配置

    Zookeeper的目的是封装好复杂易出错的关键服务,将简单易用的接口和性能高效.功能稳定的系统提供给用户.Zookeeper有两种运行模式,单机模式(Standalone)和集群模式(Distrib ...

  6. iGson

    头文件 #import <Foundation/Foundation.h> #import <objc/runtime.h> #import "NSString+Ut ...

  7. xcode 4.6 破解及真机调试

    从安卓到IOS,从  eclipse 到xcode跨度还是比较大的.在研究的过程中发现,许多时候不仅仅是C,C++,JAVA和OBJECT-C的区别,相对于编程语言来说,操作习惯和开发工具带来的困惑要 ...

  8. sonar-scanner扫描代码出错 SonarQube svn: E170001

    问题报错: Caused by: org.tmatesoft.svn.core.SVNAuthenticationException: svn: E170001: Authentication req ...

  9. jhipser微服务架构介绍

    内容提要 本文涉及以下内容: 微服务架构介绍 spring cloud介绍 jhipster架构介绍 微服务架构介绍 微服务概念 微服务和SOA很相似,都是按照业务功能把系统拆分成一个一个的服务.比如 ...

  10. 【BZOJ1176】[Balkan2007]Mokia/【BZOJ2683】简单题 cdq分治

    [BZOJ1176][Balkan2007]Mokia Description 维护一个W*W的矩阵,初始值均为S.每次操作可以增加某格子的权值,或询问某子矩阵的总权值.修改操作数M<=1600 ...