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 相关文章推荐
javascript 二维数组的实现与应用
Mar 16 Javascript
JavaScript实用技巧(一)
Aug 16 Javascript
javascript打开word文档的方法
Apr 16 Javascript
jquery ajax 如何向jsp提交表单数据
Aug 23 Javascript
jQuery获得字体颜色16位码的方法
Feb 20 Javascript
Javascript对象字面量的理解
Jun 22 Javascript
JS敏感词过滤代码
Dec 23 Javascript
移动端利用H5实现压缩图片上传功能
Mar 29 Javascript
JS基于正则表达式的替换操作(replace)用法示例
Apr 28 Javascript
使用JQuery自动完成插件Auto Complete详解
Jun 18 jQuery
axios如何利用promise无痛刷新token的实现方法
Aug 27 Javascript
解决vant-UI库修改样式无效的问题
Nov 03 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判断浏览器、判断语言代码分享
2015/03/05 PHP
php array_keys 返回数组的键名
2016/10/25 PHP
PHP流Streams、包装器wrapper概念与用法实例详解
2017/11/17 PHP
关于jquery ajax 调用带参数的webservice返回XML数据一个小细节
2012/07/31 Javascript
关于图片的预加载过程中隐藏未知的
2012/12/19 Javascript
jquery获取一组checkbox的值(实例代码)
2013/11/04 Javascript
清除div下面的所有标签的方法
2014/02/17 Javascript
SeaJS入门教程系列之使用SeaJS(二)
2014/03/03 Javascript
JavaScript将一个数组插入到另一个数组的方法
2015/03/19 Javascript
理解js回收机制通俗易懂版
2016/02/29 Javascript
在html中引入外部js文件,并调用带参函数的方法
2016/10/31 Javascript
javascript和jQuery中的AJAX技术详解【包含AJAX各种跨域技术】
2016/12/15 Javascript
js实现下拉菜单效果
2017/03/01 Javascript
详解vue.js+UEditor集成 [前后端分离项目]
2017/07/07 Javascript
VUE的history模式下除了index外其他路由404报错解决办法
2019/08/21 Javascript
JS面向对象编程——ES6 中class的继承用法详解
2020/03/03 Javascript
JavaScript数组排序功能简单实现
2020/05/14 Javascript
解决vue使用vant下拉框van-dropdown-item 绑定title值不变问题
2020/08/05 Javascript
[05:20]2018DOTA2亚洲邀请赛主赛事第三日战况回顾 LGD率先挺进胜者组决赛
2018/04/06 DOTA
python实现文件名批量替换和内容替换
2014/03/20 Python
python中遍历文件的3个方法
2014/09/02 Python
python函数装饰器用法实例详解
2015/06/04 Python
在cmd中运行.py文件: python的操作步骤
2018/05/12 Python
python 字典 按key值大小 倒序取值的实例
2018/07/06 Python
python中时间、日期、时间戳的转换的实现方法
2019/07/06 Python
pyqt5 QScrollArea设置在自定义侧(任何位置)
2019/09/25 Python
毕业生求职简历的自我评价
2013/10/23 职场文书
教师档案管理制度
2014/01/23 职场文书
工作自我评价怎么写
2014/01/29 职场文书
《美丽的小兴安岭》教学反思
2014/02/26 职场文书
党建示范点实施方案
2014/03/12 职场文书
2014年班主任自我评价范文
2014/04/23 职场文书
微信小程序基础教程之echart的使用
2021/06/01 Javascript
据Python爬虫不靠谱预测可知今年双十一销售额将超过6000亿元
2021/11/11 Python
多台电脑共享文件怎么设置?多台电脑共享文件操作教程
2022/04/08 数码科技
Java 异步任务计算FutureTask
2022/04/28 Java/Android