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 相关文章推荐
JavaScipt中的Math.ceil() 、Math.floor() 、Math.round() 三个函数的理解
Apr 29 Javascript
javascript学习笔记(九)javascript中的原型(prototype)及原型链的继承方式
Apr 12 Javascript
用jquery写的一个万年历(自写)
Jan 20 Javascript
JavaScript利用正则表达式去除日期中的-
Jun 09 Javascript
非jQuery实现照片散落桌子上,单击放大的LightBox效果
Nov 28 Javascript
Javascript基础教程之比较操作符
Jan 18 Javascript
jQuery ajax中使用confirm,确认是否删除的简单实例
Jun 17 Javascript
jQuery获取radio选中项的值实例
Jun 18 Javascript
原生JS实现导航下拉菜单效果
Nov 25 Javascript
Vue工程模板文件 webpack打包配置方法
Dec 26 Javascript
vue和react等项目中更简单的实现展开收起更多等效果示例
Feb 22 Javascript
vue自定义组件(通过Vue.use()来使用)即install的用法说明
Aug 11 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 adodb分页实现代码
2009/03/19 PHP
PHP函数microtime()用法与说明
2013/12/04 PHP
YiiFramework入门知识点总结(图文教程)
2015/12/28 PHP
PHP foreach遍历多维数组实现方式
2016/11/16 PHP
php实现的pdo公共类定义与用法示例
2017/07/19 PHP
PHP 文件上传限制问题
2019/09/01 PHP
Google Map V3 绑定气泡窗口(infowindow)Dom事件实现代码
2013/04/26 Javascript
js输出阴历、阳历、年份、月份、周示例代码
2014/01/29 Javascript
js的Prototype属性解释及常用方法
2014/05/08 Javascript
JavaScript中具名函数的多种调用方式总结
2014/11/08 Javascript
javascript自定义in_array()函数实现方法
2015/08/03 Javascript
jQuery Mobile操作HTML5的常用函数总结
2016/05/17 Javascript
vue2 如何实现div contenteditable=“true”(类似于v-model)的效果
2017/02/08 Javascript
基于jquery日历价格、库存等设置插件
2020/07/05 jQuery
限时抢购-倒计时的完整实例(分享)
2017/09/17 Javascript
Angular 封装并发布组件的方法示例
2018/04/19 Javascript
你不知道的Vue技巧之--开发一个可以通过方法调用的组件(推荐)
2019/04/15 Javascript
bootstrap-table formatter 使用vue组件的方法
2019/05/09 Javascript
微信小程序云开发实现云数据库读写权限
2019/05/17 Javascript
使用Webpack 搭建 Vue3 开发环境过程详解
2020/07/28 Javascript
基于ant design日期控件使用_仅月份的操作
2020/10/27 Javascript
[06:15]2016国际邀请赛中国区预选赛单车采访:我顶WINGS
2016/06/27 DOTA
编写Python脚本抓取网络小说来制作自己的阅读器
2015/08/20 Python
详解利用OpenCV提取图像中的矩形区域(PPT屏幕等)
2019/07/01 Python
Python udp网络程序实现发送、接收数据功能示例
2019/12/09 Python
6行Python代码实现进度条效果(Progress、tqdm、alive-progress​​​​​​​和PySimpleGUI库)
2020/01/06 Python
python使用正则表达式去除中文文本多余空格,保留英文之间空格方法详解
2020/02/11 Python
多个python文件调用logging模块报错误
2020/02/12 Python
Python如何截图保存的三种方法(小结)
2020/09/01 Python
总结Pyinstaller的坑及终极解决方法(小结)
2020/09/21 Python
UGG澳洲官网:UGG Australia
2018/04/26 全球购物
FC-Moto英国:欧洲最大的摩托车服装和头盔商店之一
2019/08/25 全球购物
银行实习生自我鉴定范文
2013/09/19 职场文书
学校教研活动总结
2014/07/02 职场文书
委托书的格式
2014/08/01 职场文书
ztree+ajax实现文件树下载功能
2021/05/18 Javascript