Salesforce学习之路(十二)Aura组件表达式
1. 表达式语法
在上篇文章组件属性示例中,新建了一个属性whom, 引用该属性时使用了表达式:{!v.whom},负责该属性的动态输出。
语法:{!expression}
上述示例中,我们的属性名称定义为whom,v表示视图(View)。当组件使用时,表达式的值将被评估并且动态替换。
注意:表达式区分大小写。空格忽略。如果自定义字段为myNamespace__Amount__c,要获取该属性值,必须写为:{!v.myObject.myNamespace__Amount__c}
1.1 表达式动态输出
利用表达式是最简单的值动态输出方式。
表达式的值可以来自:component属性,具体的数字,布尔值等。
示例:
component属性:{!v.whom} ==> 输出属性名为whom的值
文字值:{!123}, {!'abc'} ==> 输出分别为:123, abc
布尔值:{!true}, {!false} ==> 输出分别为:true,false
注意:文字值中,“!”后面可以直接跟数字值,如果是字符则需要用单引号' '包起来,不包含则组件不会加载,用双引号会报错。
1.2 条件表达式
1)三元表达式
与所有语言一样,这里也支持三元表达式,想必大家对三元表达式的概念都很清楚,这里就不再解释了。
示例:
{!v.displayMonth == '' ? 'No value' : 'Has value'}
displayMonth属性值不为空字符,打印:Has value;
displayMonth属性值为空字符,打印:No value
2)<aura:if>标记
类似与Java中if-else
示例:
<aura:component>
<aura:attribute name="read" type="Boolean" default="false" />
<aura:if isTrue="{!v.read}">
you can read it.
<aura:set attribute="else">
you cannot read it.
</aura:set>
</aura:if>
</aura:component>
read属性值为:true,打印:you can read it.
read属性值为:false,打印:you cannot read it.
1.3 不同组件间数据绑定
当我们在在一个View中添加另一个组件,可以在父组件中初始化子组件的属性值。目前有两种语法格式:
语法1: <c:childComponent childAttr="{!v.parentAttr}" />
绑定语法,将父组件中的parentAttr属性和子组件的childAttr属性关联,初始化时将parentAttr的值传递给childAttr。运行中修改任意一个属性,都会导致另外一个属性值的改变。
示例:
parentAura.cmp
<!--Parent component-->
<aura:component access="global">
<aura:attribute name="parentAttr" type="String" default="Parent Attribute" />
<!--实例化childAura组件-->
<c:childAura childAttr="{!v.parentAttr}" />
<br/>
parentAttr in parent: {!v.parentAttr}
<div style="background:white">
<lightning:button label="Apply" onclick="{!c.applyHandle}" disabled="false" />
</div>
</aura:component>
parentAuraController.js
({
applyHandle: function (cmp, event, helper) {
cmp.set('v.parentAttr', 'Parent update');
}
})
childAura.cmp
<!--Child component-->
<aura:component>
<aura:attribute name="childAttr" type="String" default="Child Attribute"/>
<div class="slds-p-top--large" tyle="background:white">
childAttr in child: {!v.childAttr}
<lightning:button label="Apply" onclick="{!c.applyHandle}" disabled="false" />
</div>
</aura:component>
childAuraController.js
({
applyHandle : function(component, event, helper) {
component.set('v.childAttr', 'Child update');
}
})
output:
childAttr in child: Parent Attribute
parentAttr in parent: Parent Attribute
点击childAura组件的apply按钮
childAttr in child: Child update
parentAttr in parent: Child update
点击parentAura组件的apply按钮
childAttr in child: Parent update
parentAttr in parent: Parent update
语法2: <c:childComponent childAttr="{#v.parentAttr}" />
非绑定语法,将父组件中的parentAttr属性和子组件的childAttr属性关联,初始化时将parentAttr的值传递给childAttr。运行中修改任意一个属性,只改变当前属性值,不会修改另外一个属性值。
示例:
parentAura.cmp
<!--Parent component-->
<aura:component access="global">
<aura:attribute name="parentAttr" type="String" default="Parent Attribute" />
<!--实例化childAura组件-->
<c:childAura childAttr="{#v.parentAttr}" />
<br/>
parentAttr in parent: {!v.parentAttr}
<div style="background:white">
<lightning:button label="Apply" onclick="{!c.applyHandle}" disabled="false" />
</div>
</aura:component>
parentAuraController.js
({
applyHandle: function (cmp, event, helper) {
cmp.set('v.parentAttr', 'Parent update');
}
})
childAura.cmp
<!--Child component-->
<aura:component>
<aura:attribute name="childAttr" type="String" default="Child Attribute"/>
<div class="slds-p-top--large" tyle="background:white">
childAttr in child: {!v.childAttr}
<lightning:button label="Apply" onclick="{!c.applyHandle}" disabled="false" />
</div>
</aura:component>
childAuraController.js
({
applyHandle : function(component, event, helper) {
component.set('v.childAttr', 'Child update');
}
})
output:
childAttr in child: Parent Attribute
parentAttr in parent: Parent Attribute
点击childAura组件的apply按钮
childAttr in child: Child update
parentAttr in parent: Parent Attribute
点击parentAura组件的apply按钮
childAttr in child: Child update
parentAttr in parent: Parent update
作者:吴家二少
博客地址:https://www.cnblogs.com/cloudman-open/
本文欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接
Salesforce学习之路(十二)Aura组件表达式的更多相关文章
- zigbee学习之路(十二):zigbee协议原理介绍
一.前言 从今天开始,我们要正式开始进行zigbee相关的通信实验了,我所使用的协议栈是ZStack 是TI ZStack-CC2530-2.3.0-1.4.0版本,大家也可以从TI的官网上直接下载T ...
- Object-c学习之路十二(OC的copy)
oc中的拷贝分为:copy(浅拷贝)和mutablecopy(深拷贝). 浅拷贝也为指针拷贝,拷贝后原来的对象计数器会+1: 深拷贝为对象拷贝,原来的对象计数器不变. 注意:自定义对象拷贝时要实现NS ...
- Java学习之路(十二):IO流<二>
字符流 字符流是可以直接读写字符的IO流 使用字符流从文件中读取字符的时候,需要先读取到字节数据,让后在转换为字符 使用字符流向文件中写入字符时,需要把字符转为字节在写入文件 Reader和Write ...
- 嵌入式Linux驱动学习之路(十二)按键驱动-poll机制
实现的功能是在读取按键信息的时候,如果没有产生按键,则程序休眠在read函数中,利用poll机制,可以在没有退出的情况下让程序自动退出. 下面的程序就是在读取按键信息的时候,如果5000ms内没有按键 ...
- IOS学习之路十二(UITableView下拉刷新页面)
今天做了一个下拉刷新的demo,主要用到了实现的开源框架是:https://github.com/enormego/EGOTableViewPullRefresh 运行结果如下: 实现很简单下载源代码 ...
- Java学习之路(十二):IO流<三>
复习:序列流 序列流可以把多个字节输入整合成一个,从序列流中读取到数据时,将从被整合的第一个流开始读取,读完这个后,然后开始读取第二个流,依次向后推. 详细见上一篇文章 ByteArrayOutput ...
- Java学习之路(十二):IO流
IO流的概述及其分类 IO流用来处理设备之间的数据传输,Java对数据的操作是通过流的方式 Java用于操作流的类都在IO包中 流按流向分为两种:输入流(读写数据) 输出流(写数据) 流按操作 ...
- java痛苦学习之路[十二]JSON+ajax+Servlet JSON数据转换和传递
1.首先client须要引入 jquery-1.11.1.js 2.其次javawebproject里面须要引入jar包 [commons-beanutils-1.8.0.jar.commons-c ...
- Salesforce学习之路(二)Profile
如上篇文章所述,针对User来讲,最重要的概念便是Profile和Role,因为Profile于Security息息相关,这是一个合格的产品中十分重要的一环. 何为Profile? 前文所讲--就是一 ...
- Salesforce学习之路(十三)Aura案例实战分析
Aura相关知识整合: Salesforce学习之路(十)Aura组件工作原理 Salesforce学习之路(十一)Aura组件属性<aura:attribute /> Salesforc ...
随机推荐
- windows进程中的内存结构(缓冲溢出原理)
接触过编程的人都知道,高级语言都能通过变量名来访问内存中的数据.那么这些变量在内存中是如何存放的呢?程序又是如何使用这些变量的呢?下面就会对此进行深入的讨论.下文中的C语言代码如没有特别声明,默认都使 ...
- HTML DIV充满整个屏幕
<!DOCTYPE html> <html> <head> <title>A Little Game!</title> <meta c ...
- [牛客网NOIP赛前集训营-普及组(第二场)]D-合法括号序列
链接:https://www.nowcoder.com/acm/contest/165/D来源:牛客网 合法括号序列 键盘上有左括号(,右括号),和退格键-,共三个键. 牛牛希望按键n次,使得输入的字 ...
- POJ2828 Buy Tickets 树状数组
Description Railway tickets were difficult to buy around the Lunar New Year in China, so we must get ...
- 【websocket】spring boot 集成 websocket 的四种方式
集成 websocket 的四种方案 1. 原生注解 pom.xml <dependency> <groupId>org.springframework.boot</gr ...
- (一)如何理解java面向对象编程
哲学中,事物总是螺旋式上升,波浪式前进.因而编程也逐渐向人类更容易理解的方向前进,多年来人们苦苦追求的编程境界 : 高扩展性(extensibility),高复用性(reuseable).java语言 ...
- Spring Boot项目中使用Mockito
本文首发于个人网站:Spring Boot项目中使用Mockito Spring Boot可以和大部分流行的测试框架协同工作:通过Spring JUnit创建单元测试:生成测试数据初始化数据库用于测试 ...
- Mybaits 源码解析 (一)----- 搭建一个mybatis框架(MyBatis HelloWorld)
源码分析之前先搭一个mybatis的demo,这个在看源码的时候能起到了很大的作用,因为在看源码的时候,会恍然大悟,为什么要这么配置,为什么要这么写.(老鸟可以跳过这篇) 开发环境的准备 创建mave ...
- 设计模式(十八)Memento模式
在使用面向对象编程的方式实现撤销功能时,需要事先保存实例的相关状态信息.然后,在撤销时,还需要根据所保存的信息将实例恢复至原来的状态. 要想恢复实例,需要一个可以自由访问实例内部结构的权限.但是,如果 ...
- django-模板之for标签(十)