Angular2数据绑定详解


Posted in Javascript onApril 18, 2017

大致介绍

Angular2中数据绑定的方式默认是以单向方式,数据绑定的方式可以分为:

1、属性绑定和插值表达式 组件类-> 模板

2、事件绑定:模板 -> 组件类

3、双向绑定: 模板 <-> 组件类

事件绑定

事件绑定是把模板中的事件绑定到组件类中的方法上,例如在一个组件中的HTML代码是:

<p>
 <a (click)="doClick($event)">点我</a>
</p>

(click)表示要进行的操作,当用户点击时就会执行组件类中的doClick方法

export class BindComponent implements OnInit {

 constructor() { }

 ngOnInit() {
 }

 doClick(event: any){
  console.log(event.target.innertext);
 }
}

属性绑定和插值表达式

其实属性绑定和插值表达式是同一个东西,因为在解析代码时,插值表达式会转换为属性绑定,所以你想用哪个就用哪个

下面的代码作用都是一样的

<!-- 插值表达式 -->
<img src="{{imgUrl}}" />

<!-- 属性绑定 -->
<img [src]="imgUrl" />

属性绑定又分为HTML属性绑定和DOM属性绑定,他们之间的区别是什么?先来看一个例子

<input type="text" value="hello" (input)="doInput($event)" />

doInput(event: any){
  console.log(event.target.value);
  console.log(event.target.getAttribute('value'));
 }

浏览器的显示:

Angular2数据绑定详解

可以看到event.target.value是获取的DOM属性,是可变的。表示当前元素的状态

而event.target.getAttribute("value")获取的是HTML属性,是不可变的。只负责初始化HTML元素,不可改变

注意:

1、有些DOM属性没有映射的HTML属性,同样有些HTML属性也没有映射的DOM属性

2、模板绑定的是DOM属性

HTML属性绑定

1、基本HTML属性绑定

<td [attr.colspan]="表达式"></td>

2、css绑定

<div class="a" [class]="b"></div> //b会完全替代a
<div [class.a]="fn()"></div> //fn()返回true,false,如果true添加.a
<div [ngClass]="{a:isA,b:isB}"></div> //b会完全替代a

3、样式绑定

<button [style.color]="a?red:green">button</button>
<button [ngStyle]="{'font-style':a?'red':'green'}">button</button>

双向绑定

双向绑定可以从组件类 -> 模板,也可以从模板 -> 组件类

例子:

<input type="text" [(ngModel)]="name" (input)="doInput()" />

private name: string = 'asdf';
 
 doInput(){
  setInterval(() => {
   this.name = 'sdf';
  },3000);
 }

利用[(ngModel)]可以实现双向数据绑定,首先在输入框中修改name,从而改变组件类中name的值,是模板组  -> 件类,修改值之后三秒,又重新设置name的值,是组件类 -> 模板

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
Ajax+Json 级联菜单实现代码
Oct 27 Javascript
判断对象是否Window的实现代码
Jan 10 Javascript
js鼠标点击事件在各个浏览器中的写法及Event对象属性介绍
Jan 24 Javascript
浅析IE10兼容性问题(frameset的cols属性)
Jan 03 Javascript
jquery五角星评分插件示例分享
Feb 21 Javascript
DOM节点的替换或修改函数replaceChild()用法实例
Jan 12 Javascript
基于JS代码实现当鼠标悬停表格上显示这一格的全部内容
Jun 12 Javascript
js实现悬浮窗效果(支持拖动)
Mar 09 Javascript
javascript实现电脑和手机版样式切换
Nov 10 Javascript
javascript定时器的简单应用示例【控制方块移动】
Jun 17 Javascript
vue+elementui实现点击table中的单元格触发事件--弹框
Jul 18 Javascript
JavaScript实现鼠标移入随机变换颜色
Nov 24 Javascript
微信小程序教程系列之设置标题栏和导航栏(7)
Jun 29 #Javascript
微信小程序实战之仿android fragment可滑动底部导航栏(4)
Apr 16 #Javascript
JavaScript实现前端实时搜索功能
Mar 26 #Javascript
用 js 的 selection range 操作选择区域内容和图片
Apr 18 #Javascript
jacascript DOM节点——元素节点、属性节点、文本节点
Apr 18 #Javascript
Angularjs根据json文件动态生成路由状态的实现方法
Apr 17 #Javascript
微信小程序实战之轮播图(3)
Apr 17 #Javascript
You might like
php版淘宝网查询商品接口代码示例
2014/06/17 PHP
php实现字符串反转输出的方法
2015/03/14 PHP
Thinkphp实现自动验证和自动完成
2015/12/19 PHP
页面回到顶部的三种实现(锚标记,js)
2012/10/01 Javascript
JavaScript显示当前文档最后修改日期的方法
2015/03/19 Javascript
原生js实现移动端瀑布流式代码示例
2015/12/18 Javascript
属于你的jQuery提示框(Tip)插件
2016/01/20 Javascript
利用HTML5+Socket.io实现摇一摇控制PC端歌曲切换
2017/01/13 Javascript
JS设置手机验证码60s等待实现代码
2017/06/14 Javascript
使用Dropzone.js上传的示例代码
2017/10/10 Javascript
javascript中神奇的 Date对象小结
2017/10/12 Javascript
Popup弹出框添加数据实现方法
2017/10/27 Javascript
微信小程序图片右边加两行文字的代码
2020/04/23 Javascript
Vue父组件监听子组件生命周期
2020/09/03 Javascript
python中查找excel某一列的重复数据 剔除之后打印
2013/02/10 Python
python中关于时间和日期函数的常用计算总结(time和datatime)
2013/03/08 Python
简单介绍Python的轻便web框架Bottle
2015/04/08 Python
python flask中静态文件的管理方法
2018/03/20 Python
Ubuntu下使用Python实现游戏制作中的切分图片功能
2018/03/30 Python
基于pandas数据样本行列选取的方法
2018/04/20 Python
python获取代码运行时间的实例代码
2018/06/11 Python
Django logging配置及使用详解
2019/07/23 Python
python sqlite的Row对象操作示例
2019/09/11 Python
Python使用matplotlib 模块scatter方法画散点图示例
2019/09/27 Python
使用CSS禁止textarea调整大小功能的方法
2015/03/13 HTML / CSS
HTML5画渐变背景图片并自动下载实现步骤
2013/11/18 HTML / CSS
日本民宿预约平台:STAY JAPAN
2017/07/01 全球购物
英国皇家造币厂:The Royal Mint
2018/10/05 全球购物
Bata印度官网:源自欧洲舒适鞋履品牌
2020/01/30 全球购物
不服从公司安排检讨书
2014/09/24 职场文书
大一新生检讨书
2014/10/29 职场文书
2015年学校减负工作总结
2015/05/19 职场文书
《用字母表示数》教学反思
2016/02/17 职场文书
一篇合格的广告文案,其主要目的是什么?
2019/07/12 职场文书
评测 | 大屏显示带收音机的高端音箱,JBL TUNE2便携式插卡音箱实测
2021/04/24 无线电
MySQL如何使用使用Xtrabackup进行备份和恢复
2021/06/21 MySQL