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 相关文章推荐
(function($){...})(jQuery)的意思
Jul 22 Javascript
javascript中的document.open()方法使用介绍
Oct 09 Javascript
JavaScript的内存释放问题详解
Jan 21 Javascript
简单的jQuery banner图片轮播实例代码
Mar 04 Javascript
vue.js树形组件之删除双击增加分支实例代码
Feb 28 Javascript
彻底学会Angular.js中的transclusion
Mar 12 Javascript
Angular4项目中添加i18n国际化插件ngx-translate的步骤详解
Jul 02 Javascript
Vue中Quill富文本编辑器的使用教程
Sep 21 Javascript
Swiper.js实现移动端元素左右滑动
Sep 08 Javascript
vuex+axios+element-ui实现页面请求loading操作示例
Feb 02 Javascript
原生javascript制作的拼图游戏实现方法详解
Feb 23 Javascript
html实现随机点名器的示例代码
Apr 02 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
一个简单的域名注册情况查询程序
2006/10/09 PHP
jQuery filter函数使用方法
2014/05/19 Javascript
JavaScript Math.ceil 方法(对数值向上取整)
2015/01/09 Javascript
SyntaxHighlighter 3.0.83使用笔记
2015/01/26 Javascript
Bootstrap每天必学之模态框(Modal)插件
2016/04/26 Javascript
javascript简单实现跟随滚动条漂浮的返回顶部按钮效果
2016/08/19 Javascript
使用jquery如何获取时间
2016/10/13 Javascript
微信小程序 支付简单实例及注意事项
2017/01/06 Javascript
JS利用cookies设置每隔24小时弹出框
2017/04/20 Javascript
uploader秒传图片到服务器完整代码
2017/04/22 Javascript
关于Bootstrap按钮组件消除黄框的方法
2017/05/19 Javascript
自定义vue全局组件use使用、vuex的使用详解
2017/06/14 Javascript
深入理解requireJS-实现一个简单的模块加载器
2018/01/15 Javascript
QQ跳转支付宝并自动领红包脚本(最新)
2018/06/22 Javascript
JavaScript求一个数组中重复出现次数最多的元素及其下标位置示例
2018/07/23 Javascript
基于Layui自定义模块的使用方法详解
2019/09/14 Javascript
JS数组Reduce方法功能与用法实例详解
2020/04/29 Javascript
JavaScript实现网页下拉菜单效果
2020/11/20 Javascript
基于vue项目设置resolves.alias: '@'路径并适配webstorm
2020/12/02 Vue.js
[16:19]教你分分钟做大人——风暴之灵
2015/03/11 DOTA
[02:29]完美世界高校联赛上海赛区回顾
2015/12/15 DOTA
Python轻量级ORM框架Peewee访问sqlite数据库的方法详解
2017/07/20 Python
Python实现读写sqlite3数据库并将统计数据写入Excel的方法示例
2017/08/07 Python
python 字符串和整数的转换方法
2018/06/25 Python
python使用正则表达式来获取文件名的前缀方法
2018/10/21 Python
pygame游戏之旅 创建游戏窗口界面
2018/11/20 Python
python 使用poster模块进行http方式的文件传输到服务器的方法
2019/01/15 Python
Python Selenium自动化获取页面信息的方法
2020/08/31 Python
python中turtle库的简单使用教程
2020/11/11 Python
Spongelle官网:美国的创意护肤洗护品牌
2019/05/15 全球购物
小学教师培训感言
2014/02/11 职场文书
三方合作协议书范本
2014/04/18 职场文书
慈善捐赠倡议书
2014/08/30 职场文书
个人授权委托书模板
2014/09/14 职场文书
卫生保健工作总结2015
2015/05/18 职场文书
apache基于端口创建虚拟主机的示例
2021/04/22 Servers