发表于: 2021-10-15 23:55:19

0 969


今天完成的事情:

查看数据绑定与双向绑定

Angular 提供了多种数据绑定方式。绑定类型可以分为三类,按数据流的方向分为:

  • 数据源到视图

  • 视图到数据源

  • 双向:视图到数据源到视图

数据绑定 

数据绑定使用 DOM 元素、组件和指令的 Property,而不是 HTML 的Attribute。

HTML attribute 与 DOM property 的对比

理解 HTML 属性和 DOM 属性之间的区别,是了解 Angular 绑定如何工作的关键。Attribute 是由 HTML 定义的。Property 是从 DOM(文档对象模型)节点访问的。

一些 HTML Attribute 可以 1:1 映射到 Property;例如,“ id”。

某些 HTML Attribute 没有相应的 Property。例如,aria-*。

某些 DOM Property 没有相应的 Attribute。例如,textContent。

重要的是要记住,HTML Attribute 和 DOM Property 是不同的,就算它们具有相同的名称也是如此。 在 Angular 中,HTML Attribute 的唯一作用是初始化元素和指令的状态。

模板绑定使用的是 Property 和事件,而不是 Attribute。

编写数据绑定时,你只是在和目标对象的 DOM Property 和事件打交道。

绑定类型与绑定目标

数据绑定的目标是 DOM 中的对象。 根据绑定类型,该目标可以是 Property 名(元素、组件或指令的)、事件名(元素、组件或指令的),有时是 Attribute 名。下表中总结了不同绑定类型的目标。

事件绑定(event)

事件绑定允许你监听某些事件,比如按键、鼠标移动、点击和触屏。

在事件绑定中,angular会为目标事件设置事件处理器。当事件发生时,这个处理器会执行模板语句。 典型的模板语句通常涉及到响应事件执行动作的接收器,例如从 HTML 控件中取得值,并存入模型。

绑定会通过名叫 $event 的事件对象传递关于此事件的信息(包括数据值)。

事件对象的形态取决于目标事件。如果目标事件是原生 DOM 元素事件, $event 就是 DOM 事件对象,它有像 target 和 target.value 这样的属性。

<input [value]="currentItem.name"

       (input)="currentItem.name=$event.target.value" >

without NgModel

上面的代码在把输入框的 value 属性绑定到 name 属性。 要监听对值的修改,代码绑定到输入框的 input 事件。 当用户造成更改时,input 事件被触发,并在包含了 DOM 事件对象 ($event) 的上下文中执行这条语句。

要更新 name 属性,就要通过路径 $event.target.value 来获取更改后的值。






双向绑定的基础知识

设置特定的元素属性

监听元素的变更事件

[()] 语法很容易想明白:该元素具有名为 x 的可设置属性和名为 xChange 的相应事件。双向绑定语法实际上是属性绑定和事件绑定的语法糖。但是,没有哪个原生 HTML 元素会遵循 x 值和 xChange 事件的命名模式。




返回列表 返回列表
评论

    分享到