▓▓▓▓▓▓ 大致介绍

  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'));
}

  

  浏览器的显示:

  可以看到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的值,是组件类 -> 模板

  

最新文章

  1. TaintDroid剖析之DVM变量级污点跟踪(下篇)
  2. Java中Map的三种遍历方法
  3. 各大公司广泛使用的在线学习算法FTRL详解
  4. 电脑IP改变后oracle em无法登陆的解决办法(亲测)
  5. .c和.h文件的区别(头文件与之实现文件的的关系~ )
  6. 转:requirejs2.0新特性介绍
  7. openstack私有云布署实践【16.2 Ubuntu1404 只有根分区镜像制作】
  8. codeforces 755D. PolandBall and Polygon
  9. webdriver
  10. POJ-1135 Domino Effect---最短路Dijk
  11. luogu5283 异或粽子
  12. centos7如何查询已运行服务?
  13. oracle sql优化的几种方法
  14. 使用swiper.js实现移动端tab切换
  15. OO第1~3次作业总结
  16. RBF神经网络和BP神经网络的关系
  17. August 05th 2017 Week 31st Saturday
  18. 【SQL】176. Second Highest Salary
  19. Python类中self的作用
  20. postfix邮件服务器搭建03-webmail安装篇

热门文章

  1. [看图说话] 基于Spark UI性能优化与调试——初级篇
  2. hibernate系列笔记(2)---Hibernate的核心API
  3. Asp.Net 常用工具类之加密——非对称加密RSA算法
  4. 警惕一大波银行类木马正在靠近,新型BankBot木马解析
  5. ERP实施顾问工作中应努力做到哪些?
  6. Web前端与移动开发学习路线图
  7. C#:求1到100的和
  8. 获取3个月前的时间(获取某一天的时间 NSDate)
  9. SQL一次查出相关类容避免长时间占用表(下)
  10. CoreAnimation 图层几何学