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 showModalDialog 内跳转页面的问题
Nov 25 Javascript
js定时器(执行一次、重复执行)
Mar 07 Javascript
jQuery中:animated选择器用法实例
Dec 29 Javascript
javascript算法题:求任意一个1-9位不重复的N位数在该组合中的大小排列序号
Apr 01 Javascript
js仿腾讯QQ的web登陆界面
Aug 19 Javascript
Angular实现点击按钮后在上方显示输入内容的方法
Dec 27 Javascript
js数据类型转换与流程控制操作实例分析
Dec 18 Javascript
js实现简单点赞操作
Mar 17 Javascript
Node.js API详解之 timer模块用法实例分析
May 07 Javascript
解决element-ui里的下拉多选框 el-select 时,默认值不可删除问题
Aug 14 Javascript
微信小程序实现点击页面出现文字
Sep 21 Javascript
vite+vue3.0+ts+element-plus快速搭建项目的实现
Jun 24 Vue.js
微信小程序教程系列之设置标题栏和导航栏(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 解决旧系统 查出所有数据分页的类
2012/08/27 PHP
深入理解PHP中的Session和Cookie
2013/06/21 PHP
PHP IDE phpstorm 常用快捷键
2015/05/18 PHP
php文件操作之文件写入字符串、数组的方法分析
2019/04/15 PHP
JTrackBar水平拖动效果
2007/07/15 Javascript
js查找父节点的简单方法
2008/06/28 Javascript
js 定时器setTimeout无法调用局部变量的解决办法
2013/11/28 Javascript
分享33个jQuery与CSS3实现的绚丽鼠标悬停效果
2014/12/15 Javascript
javascript中String对象的slice()方法分析
2014/12/20 Javascript
javascript制作sql转换为stringBuffer的小工具
2015/04/03 Javascript
创建基于Bootstrap的下拉菜单的DropDownList的JQuery插件
2016/06/02 Javascript
Javascript字符串常用方法详解
2016/07/21 Javascript
js 自带的sort() 方法全面了解
2016/08/16 Javascript
jQuery购物网页经典制作案例
2016/08/19 Javascript
jquery对Json的各种遍历方法总结(必看篇)
2016/09/29 Javascript
ionic2屏幕适配实现适配手机、平板等设备的示例代码
2017/08/11 Javascript
Angular 2使用路由自定义弹出组件toast操作示例
2019/05/10 Javascript
[02:48]DOTA2英雄基础教程 暗夜魔王
2013/12/12 DOTA
用Python编写生成树状结构的文件目录的脚本的教程
2015/05/04 Python
python reverse反转部分数组的实例
2018/12/13 Python
详解Python字典的操作
2019/03/04 Python
python简单验证码识别的实现方法
2019/05/10 Python
python 通过视频url获取视频的宽高方式
2019/12/10 Python
使用PyOpenGL绘制三维坐标系实例
2019/12/24 Python
基于TensorFlow常量、序列以及随机值生成实例
2020/01/04 Python
HTML5 Canvas的常用线条属性值总结
2016/03/17 HTML / CSS
台湾生鲜宅配:大口市集
2017/10/14 全球购物
美国在线旅行社:Crystal Travel
2018/09/11 全球购物
MYSQL相比于其他数据库有哪些特点
2013/07/19 面试题
普师专业个人自荐信范文
2013/11/26 职场文书
《泉水》教学反思
2014/04/11 职场文书
老公给老婆的保证书
2014/04/28 职场文书
商铺门前三包责任书
2014/07/25 职场文书
读群众路线的心得体会
2014/09/03 职场文书
白酒代理协议书范本
2014/10/26 职场文书
2016年暑期教师培训心得体会
2016/01/09 职场文书