1. <aura:attribute />语法

Aura组件属性类似与Apex中类的成员变量(或者说Java中类的成员变量)。他们是组件在特定的实例上设置的类型化字段,可以使用表达式语法从组件的标记内引用他们。

语法:<aura:attribute name="**" type="**" default="**" required="true/false" access="**" description="**">

  • name:必要字段,属性的名称
  • type:必要字段,属性的类型,支持的类型见下面的“属性type支持的类型”
  • default:非必要字段,默认值类型与type一致。
  • required:非必要字段,标记该属性是否为必须字段。true:表该字段为必要字段;false:表该字段为非必要字段。
  • access: 非必要字段,表该属性是否可被所属命名空间之外使用。public(默认):所有命名空间皆可用;global:应用内可使用;private: 组件内可使用。
  • description: 非必要字段,对该属性进行简单的描述。

示例:

  1. <aura:component>
  2. <aura:attribute name="whom" type="String" default="world"/>
  3. Hello {!v.whom}!
  4. </aura:component>

2. 属性命名规则:

  • 必须以字母或者下划线开头
  • 必须仅包含字母,数字,下划线字符

示例:

  1. <!--正确-->
  2. <aura:attribute name="test" type="String" />
  3. <aura:attribute name="_test" type="String" />
  4. <aura:attribute name="__123" type="String" />
  5.  
  6. <!--错误-->
  7. <!--数字开头-->
  8. <aura:attribute name="1test" type="String" />
  9. <!--含有特殊字符-->
  10. <aura:attribute name="test#" type="String" />

3. 属性type支持的类型

<aura:attribute />支持的类型有以下几种:基础类型,函数类型,对象类型,标准和自定义对象类型,集合类型,Apex Class类型,指定框架类型。

  • 基础类型
类型 示例 描述
Boolean <aura:attribute name="showDetail" type="Boolean" /> 值为true/false
Date <aura:attribute name="startDate" type="Date" /> 日期类型,格式为:yyyy-mm-dd。hh:mm:ss没有保存。
DateTime <aura:attribute name="lastModifiedDate" type="DateTime" />

日期类型,对应时间戳格式。

保存了除了日期,还保存了时间,并且精确到毫秒。

Decimal <aura:attribute name="totalPrice" type="Decimal" />

十进制,可以包括小数部分。对应Java.math.BigDecimal,精度高于Double类型。

针对货币字段,一般选择该类型。

Double <aura:attribute name="widthInchesFractional" type="Double" /> Double类型,可以包含小数位。对应Java.lang.Double。
Integer <aura:attribute name="numRecords" type="Integer" /> 整数类型,不包含小数位。对应Java.lang.Integer。
Long <aura:attribute name="numSwissBankAccount" type="Long" /> 长整型,不包含小数位。对应Java.lang.Long。
String <aura:attribute name="message" type="String" /> 字符串类型。

示例:

  1. <aura:attribute name="favoriteColors" type="String[]" default="['red','green','blue']" />
  • 函数类型

属性的类型可以对象Javascript中的某个函数。如果子组件具有该类型的属性,可传递回调函数给父组件。

示例:

  1. <aura:attribute name="callback" type="Function" />

注意:该类型不适用于服务端,仅在客户端使用。

  • 对象类型

该类型的属性对应一个对象。

示例:

  1. <aura:attribute name="data" type="Object" />

注意:一般情况下,不建议使用该类型。object类型的属性在传递至服务端时,会将所有的东西序列化为字符串,此时如果使用深度表达(例如:v.data.property),则会抛出字符串没有该属性异常。因此,尽量使用type="Map",防止出现反序列化等问题。

  • 标准或自定义对象类型

属性支持标准或自定义对象的类型。

示例:

  1. <!--标准对象-->
  2. <aura:attribute name="account" type="Account" />
  3. <!--自定义对象-->
  4. <aura:attribute name="employee" type="Employee__c" />

注意:用户至少对该对象具有读取权限,否则组件虽然不会报错,但是页面不会加载。

  • 集合类型

下面为支持的集合类型:

类型 示例 描述
type[](Array) <aura:attribute name="colorPalette" type="String[]" default="['red', 'green', 'blue']" /> 自定义数组
List <aura:attribute name="colorPalette" type="List" default="['red', 'green', 'blue']" /> 有序的列表
Map <aura:attribute name="sectionLabels" type="Map" default="{ a: 'label1', b: 'label2' }" />

key:value集合。key不可重复。

如果不设置默认值,则在Javascript中默认设为null。

如果想设置空值,可写为:default="{}"

Set <aura:attribute name="collection" type="Set" default="['red', 'green', 'blue']" /> 集合,无序,不含重复元素。

示例:

  1. <!--这里使用type[]类型-->
  2. <aura:attribute name="displayMonth" type="String[]" default="['6', '12']" />
  • Apex Class类型

该类型属性对应一个Apex类。

示例:

存在某个自定义Apex类:DemoAuraController.cls

  1. <!--存在名为:DemoAuraController.cls的Apex类-->
  2. <aura:attribute name="data" type="DemoAuraController" />

注意:type类型大小写不敏感,例如这里可以写成demoauracontroller。

  • 指定框架类型

下面为支持的指定框架类型:

类型 示例 描述
Aura:component N/A

一个单独的组件。

相比较而言,官方推荐使用Aura:component[]类型。

Aura:component[]
  1. <aura:component>
  2. <aura:attribute name="detail" type="Aura.Component[]">
  3. <p>default paragraph1</p>
  4. </aura:attribute>
  5. Default value is: {!v.detail}
  6. </aura:component>
利用该类型可以设置一个类型块。 
 Aura.Action <aura:attribute name =“ onclick” type =“ Aura.Action” />   使用此类型,可以将action传递给组件。

4. 实例分析

sample.cmp

  1. <aura:component controller="TestAuraController"
  2. implements="force:appHostable,flexipage:availableForAllPageTypes"
  3. access="global">
  4.  
  5. <aura:attribute name="whom" type="String" default="world" />
  6.  
  7. <!--组件初始化操作-->
  8. <aura:handler name="init" value="{!this}" action="{!c.handleInit}" />
  9. <div>
  10. <!--按钮组件,label为界面显示值;onclick: 点击按钮时触发controller.js中applyHandle函数-->
  11. <!--display: true表示按钮灰掉,无法操作;false表示正常工作-->
  12. <lightning:button label="Apply" onclick="{!c.applyHandle}" disabled="false" />
  13. </div>
  14. </aura:component>

sampleController.js

  1. ({
  2. handleInit: function (cmp, event, helper) {
  3. // 初始化组件时,将whom默认值打印值控制台
  4. console.log("init whom: " + cmp.get('v.whom'));
  5. },
  6.  
  7. applyHandle: function (cmp, event, helper) {
  8. // 点击Apply按钮时,更新whom值,并打印到控制台
  9. cmp.set('v.whom', 'updated');
  10. console.log("apply whom: " + cmp.get('v.whom'));
  11. }
  12. })

结果分析:

  1. #初始化:
  2. init whom: world
  3. #点击apply按钮:
  4. apply whom: updated

作者:吴家二少

博客地址:https://www.cnblogs.com/cloudman-open/

本文欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接

Salesforce学习之路(十一)Aura组件属性<aura:attribute />的更多相关文章

  1. Salesforce学习之路(十二)Aura组件表达式

    1. 表达式语法 在上篇文章组件属性示例中,新建了一个属性whom, 引用该属性时使用了表达式:{!v.whom},负责该属性的动态输出. 语法:{!expression} 上述示例中,我们的属性名称 ...

  2. Salesforce学习之路(十三)Aura案例实战分析

    Aura相关知识整合: Salesforce学习之路(十)Aura组件工作原理 Salesforce学习之路(十一)Aura组件属性<aura:attribute /> Salesforc ...

  3. 『NiFi 学习之路』自定义 —— 组件的自定义及使用

    一.概述 许多业务仅仅使用官方提供的组件不能够满足性能上的需求,往往要通过高度可定制的组件来完成特定的业务需求. 而 NiFi 提供了自定义组件的这种方式. 二.自定义 Processor 占坑待续 ...

  4. Salesforce学习之路-developer篇(五)Aura组件原理及常用属性

    很喜欢曾经看到的一句话:以输出倒逼输入.以输出的形式强制自己学习,确实是高效的学习方式,真的很棒.以下仅为个人学习理解,如有错误,欢迎指出,共同学习. 1. 什么是Lightning Componen ...

  5. Salesforce学习之路(十)Aura组件工作原理

    很喜欢曾经看到的一句话:以输出倒逼输入.以输出的形式强制自己学习,确实是高效的学习方式,真的很棒.以下仅为个人学习理解,如有错误,欢迎指出,共同学习. 1. 什么是Lightning Componen ...

  6. Salesforce学习之路-developer篇(五)一文读懂Aura原理及实战案例分析

    1. 什么是Lightning Component框架? Lightning Component框架是一个UI框架,用于为移动和台式设备开发Web应用程序.这是一个单页面Web应用框架,用于为Ligh ...

  7. Salesforce学习之路(十)Org的命名空间

    1. 命名空间的适用场景 每个组件都是命名空间的一部分,如果Org中设置了命名空间前缀,那么需使用该命名空间访问组件.否则,使用默认命名空间访问组件,系统默认的命名空间为“c”. 如果Org没有创建命 ...

  8. Salesforce学习之路(九)Org的命名空间

    1. 命名空间的适用场景 每个组件都是命名空间的一部分,如果Org中设置了命名空间前缀,那么需使用该命名空间访问组件.否则,使用默认命名空间访问组件,系统默认的命名空间为"c". ...

  9. hibernate学习笔记(6)组件属性以及单表操作

    组件属性:实体类中的某个属性属于用户自定义类的对象: 作用:将两个实体类合并在一起组建成一个表 在hbm.xml文件中配置: 格式: <component name="取的名字&quo ...

随机推荐

  1. 代码审计-MetInfo CMS任意文件读取漏洞

    0x01 代码分析 发现在app\system\include\module\old_thumb.class.php疑似有任意文件读取漏洞 public function doshow(){ glob ...

  2. vc++中代码段的免杀

    一.文件特征码定位: 一般我们先用MyCCL把被查杀文件的文件特征码定位出来,然后用C32判断定位出来的这个特征码是代码还 是字符串,或者是输入表.输出表.版权信息等…定位在不同的地方,就要用不同的方 ...

  3. PHP krsort

    1.什么都不想说了,干么没事放那么悲伤的歌呢?回忆里我还是对代码懵懵懂懂的无知青年!也许不是青年,只是少年... <?php $arr = [ 1 => 'Zhangbiyu', 2 =& ...

  4. JZOJ5771【NOIP2008模拟】遨游

    Description      MWH寒假外出旅游,来到了S国.S国划分为N个省,第i个省有Ti座城市,编号分别为Ci1,Ci2,……CiTi(各省城市编号不会重复).所有城市间有M条双向的道路连接 ...

  5. 80%面试官不知道的dubbo → 【redis注册中心】

    dubbo的redis注册中心配置和注意事项 配置provider和consumer项目的pom.xml,增加如下2个依赖: org.apache.commons commons-pool2 2.4. ...

  6. SpringBoot系列:Spring Boot集成Spring Cache,使用RedisCache

    前面的章节,讲解了Spring Boot集成Spring Cache,Spring Cache已经完成了多种Cache的实现,包括EhCache.RedisCache.ConcurrentMapCac ...

  7. wait,notify,notifyAll详细介绍

    https://www.cnblogs.com/pangyang/articles/5916349.html

  8. pytest5-使用conftest.py实现多文件共享fixture

    一个测试工程下是可以有多个conftest.py的文件,一般在工程根目录放一个conftest.py起到全局作用.在不同的测试子目录也可以放conftest.py,作用范围只在该层级以及以下目录生效. ...

  9. 06 python学习笔记-常用模块(六)

    一.  模块.包 1.什么是模块? Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句,是用来组织代码的.模块能定义函数 ...

  10. postgresql被注入之后

    本来只是贪便宜买了个一年特价的阿里云服务器,做做测试什么的,结果不知道哪一天开始阿里云安全中心就开始给我发什么安全提示类的信息,一开始我并不在意,因为这些都是套路,不过是想让我升级购买高防盾罢了,反正 ...