5.1数据绑定、响应式编程和管道

angular提供的数据绑定:

  • 插值表达式:使用插值表达式将一个表达式的值显示在模板上。示例:

      <h1>{{productTitle}}<hi>
  • 属性绑定:使用方括号将一个表达式的值赋给Html标签的一个属性。示例:

      <img [src] ="imgUrl">
  • 事件绑定:使用小括号将组件控制器的一个方法指定为模板中事件的处理器。示例:

      <button (click)="toProductDetail">商品详情</button>
  • 双向绑定:使用“[(ngModel)]”将控制器和模板关联起来,任何一方的改变都会引起另一方的改变。示例:

      <input [(ngModel)]="name">

使用插值表达式(控制器→模板DOM属性)

<h1>{{productTitle}}</h1>
<h1>{{表达式}}</h1>

注意:angular会将“插值表达式”翻译为“属性绑定” 等价于

属性绑定

html属性和dom属性的区别

当浏览器渲染界面时,会为html标签生成一个类型为HTMLElement的Dom节点,每个dom都有自己的属性和方法。如input标签生成domInputElement

属性

描述

获取方式

html属性

不可变,其值为初始值

event.target.value

dom属性

可变,其值为当前值

event.target.getAttribute('value')

HTML属性和DOM属性的关系

  • 少量HTML属性和DOM属性之间有着1:1的映射,如id

  • 有些HTML属性没有对应的DOM属性,如colspan

  • 有些DOM属性没有对应的HTML属性,如textContent

  • 就算名字相同,HTML属性和DOM属性也不是同一样东西

  • HTML属性的值指定了初始值,DOM属性的值表示当前值。

  • HTML属性的值不能改变,DOM属性的值可以改变。

  • 模板绑定使用DOM属性和事件来工作的,而不是Html属性

实战:为一个input标签设置“value”属性并添加“input”事件,“value”属性值为“初始值”,“input”事件将触发控制器的onInput()方法打印出标签的Html属性和Dom属性值

  • 模板代码

  • 控制器代码

DOM属性绑定(控制器→模板DOM属性)

angular中常使用的是DOM属性绑定。

HTML属性绑定(控制器→模板HTML属性)

当某些标签的HTML属性没有与之对应的DOM属性时,需要使用HTML属性绑定。例如table标签colspan只有HTML属性而没有DOM属性。

  • 基本Html属性绑定

  • css类绑定

  • 样式绑定

事件绑定(模板→控制器)

  1. 事件绑定结构:

    结构

    描述

    小括号

    表示这是个事件绑定

    事件名称

    事件可以为:示例中为input事件

    组件方法名称

    示例中为onInputEvent

    浏览器事件对象

    示例中为$event

    当事件发生时执行的表达式除了上述的控制器方法,还可以为任意表达式。

  2. 实战:为一个“点我”按钮添加onlick事件,事件触发时调用控制器中的onclick()方法打印出按钮的事件对象。

    • 模板代码

    • 控制器代码

双向绑定

双向绑定=事件绑定+属性绑定。 不过我们并不知道双向绑定中绑定的具体事件,angular将会为不同标签绑定不同的事件不同。

使用双向绑定时,需要在模块的@NgModule注解的imports中引入FormsModule。

Last updated

Was this helpful?