Angular4学习教程之DOM属性绑定详解


Posted in Javascript onJanuary 04, 2018

前言

DOM 元素触发的一些事件通过 DOM 层级结构传播,事件首先由最内层的元素开始,然后传播到外部元素,直到它们到根元素,这种传播过程称为事件冒泡。本文主要介绍了关于Angular4 DOM属性绑定的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。

简介

使用插值表达式将一个表达式的值显示在模版上

<img src="{{imgUrl}}" alt="">
<h1>{{productTitle}}</h1>

使用方括号将HTML标签的一个属性值绑定到一个表达式上

<img [src]="imgUrl" alt="">

使用小括号将组件控制器的一个方法绑定到模版上面的一个事件的处理器上

<button (click)="onClickButton($event)">按钮绑定事件</button>

注意

在开始下面的例子之前,请先确认已经新建了一个工程。如果没有,请查看:Angular2学习笔记之Angular CLI 安装和使用教程

事件绑定

Angular4学习教程之DOM属性绑定详解

准备工作

了解目的:在模版的界面上面增加一个按钮,然后通过小括号绑定一个事件。

新建一个 bind 组件,使用命令:  ng g c bind

修改 bind.component.html

<!-- 界面增加代码 -->
<button (click)="onClickButton($event)">按钮绑定事件</button>

修改 bind.component.ts

//在 BindComponent 类方法中增加方法体
onClickButton(event: any){
 console.log(event);
}

修改 app.component.html

<!-- 增加 app-bind 组件 -->
<app-bind></app-bind>

图示:

Angular4学习教程之DOM属性绑定详解

Dom属性绑定

例子一

插值表达式 与 属性绑定 之间的关系

两种方式都可以实现,angular 在实现的逻辑上面是: 在程序加载组件的时候,会先将 "插值表达式" 翻译为 "属性绑定"

修改 bind.component.html

<!-- 界面增加代码 -->
<!-- 属性绑定 -->
<img [src]="imgUrl" alt="">
<!-- 插值表达式绑定 -->
<img src="{{imgUrl}}" alt="">

修改 bind.component.ts

//增加变量
imgUrl: string = http://placehold.it/320x280;

图示:

Angular4学习教程之DOM属性绑定详解

例子二

dom 属性 与 html 属性的区别

HTML元素的 DOM属性和 HTML 属性是有部分区别的,这点需要明确差异。

修改 bind.component.html

<!-- 增加代码 -->
<div>
 <input type="text" value="Tom" (input)="onInputEvent($event)">
</div>

修改 bind.component.ts

//增加 event事件
onInputEvent(event: any){
 //获取的是 dom 属性,即输入属性
 console.log(event.target.value);
 //获取的是 html 属性,也就是初始化的属性
 console.log(event.target.getAttribute("value"));
}

图示:

Angular4学习教程之DOM属性绑定详解

小结:

      1.少量的 HTML属性和 DOM属性之间有这 1 :1 的映射关系,如 :id

      2.有些有 HTML属性,没有DOM 属性, 如:colspan

      3.有些有 DOM属性,没有HTML 属性,如:textContent

      4.就算名字一样,DOM属性和HTML属性获取的内容可能不一样

      5.模版绑定是通过DOM属性绑定的,而不是通过HTML属性

      6.HTML属性指定了初始值,DOM属性表示当前值;DOM属性的值可以改变,HTML的值不能改变

例子部分完整代码

bind.component.html

<p>
 bind works!
</p>
<button (click)="onClickButton($event)">按钮绑定事件</button>
<div>
 <!-- 属性绑定 -->
 <img [src]="imgUrl" alt="">

 <!-- 插值表达式绑定 -->
 <img src="{{imgUrl}}" alt="">
</div>
<div>
 <input type="text" value="Tom" (input)="onInputEvent($event)">
</div>

bind.component.ts

import { Component, OnInit } from '@angular/core';
@Component({
 selector: 'app-bind',
 templateUrl: './bind.component.html',
 styleUrls: ['./bind.component.css']
})
export class BindComponent implements OnInit {
 imgUrl: string = "http://placehold.it/320x280";
 constructor() { }
 ngOnInit() {
 }
 onClickButton(event: any){
 console.log(event);
 }
 onInputEvent(event: any){
 //获取的是 dom 属性,即输入属性
 console.log(event.target.value);

 //获取的是 html 属性,也就是初始化的属性
 console.log(event.target.getAttribute("value"));
 }
}

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
封装的原生javascript弹出层代码
Sep 24 Javascript
javascript中声明函数的方法及调用函数的返回值
Jul 22 Javascript
JavaScript常用的返回,自动跳转,刷新,关闭语句汇总
Jan 13 Javascript
js图片轮播手动切换效果
Nov 10 Javascript
jquery实现图片放大镜功能
Nov 23 Javascript
浅谈JS中的bind方法与函数柯里化
Aug 10 Javascript
AngularJS指令与指令之间的交互功能示例
Dec 14 Javascript
vue双向数据绑定原理探究(附demo)
Jan 17 Javascript
vue 自动化路由实现代码
Sep 03 Javascript
layui 实现表单和文件上传一起传到后台的例子
Sep 16 Javascript
Vue根据条件添加click事件的方式
Nov 09 Javascript
Angular短信模板校验代码
Sep 23 Javascript
JS实现简易换图时钟功能分析
Jan 04 #Javascript
Angular4学习之Angular CLI的安装与使用教程
Jan 04 #Javascript
利用Vue2.x开发实现JSON树的方法
Jan 04 #Javascript
vue-cli配置文件——config篇
Jan 04 #Javascript
jQuery封装animate.css的实例
Jan 04 #jQuery
js 公式编辑器 - 自定义匹配规则 - 带提示下拉框 - 动态获取光标像素坐标
Jan 04 #Javascript
浅谈vuex 闲置状态重置方案
Jan 04 #Javascript
You might like
php文件操作实例代码
2012/05/10 PHP
PHP实现SMTP邮件的发送实例
2018/09/27 PHP
ajax 同步请求和异步请求的差异分析
2011/07/04 Javascript
js判断上传文件的类型和大小示例代码
2013/10/18 Javascript
node.js中的http.response.end方法使用说明
2014/12/14 Javascript
jQuery和AngularJS的区别浅析
2015/01/29 Javascript
jquery实现Ctrl+Enter提交表单的方法
2015/07/21 Javascript
15个常用的jquery代码片段
2015/12/19 Javascript
详解基于angular路由的requireJs按需加载js
2017/01/20 Javascript
解决AjaxFileupload 上传时会出现连接重置的问题
2017/07/07 Javascript
js制作简单的音乐播放器的示例代码
2017/08/28 Javascript
webpack vue项目开发环境局域网访问方法
2018/03/20 Javascript
详解ES6中的 Set Map 数据结构学习总结
2018/11/06 Javascript
Django+Vue实现WebSocket连接的示例代码
2019/05/28 Javascript
JavaScript进制转换实现方法解析
2020/01/18 Javascript
Vue中watch、computed、updated三者的区别及用法
2020/07/27 Javascript
Python bsddb模块操作Berkeley DB数据库介绍
2015/04/08 Python
解决Python 遍历字典时删除元素报异常的问题
2016/09/11 Python
python模块之sys模块和序列化模块(实例讲解)
2017/09/13 Python
Python3.x爬虫下载网页图片的实例讲解
2018/05/22 Python
pycharm在调试python时执行其他语句的方法
2018/11/29 Python
利用selenium爬虫抓取数据的基础教程
2019/06/10 Python
什么是python的列表推导式
2020/05/26 Python
Html5导航栏吸顶方案原理与对比实现
2020/06/10 HTML / CSS
初中化学教学反思
2014/01/23 职场文书
初中班主任寄语
2014/04/04 职场文书
爱心捐助倡议书
2014/05/19 职场文书
英语教研活动总结
2014/07/02 职场文书
报考公务员诚信承诺书
2014/08/29 职场文书
我的兄弟姐妹观后感
2015/06/15 职场文书
《落花生》教学反思
2016/02/16 职场文书
24句精辟的现实社会语录,句句扎心,道尽人性
2019/08/29 职场文书
解决Pytorch dataloader时报错每个tensor维度不一样的问题
2021/05/28 Python
python opencv旋转图片的使用方法
2021/06/04 Python
浅谈Golang 切片(slice)扩容机制的原理
2021/06/09 Golang
SQL Server中搜索特定的对象
2022/05/25 SQL Server