详解如何在angular2中获取节点


Posted in Javascript onNovember 23, 2017

我们知道在angular2中ts文件支持js代码,为什么用document.getElementById没法获取元素节点呢?

其实在angular2中先加载ts文件,再加载view,所以获取不到节点。

在应用层直接操作 DOM,就会造成应用层与渲染层之间强耦合,导致我们的应用无法运行在不同环境,如 web worker 中,因为在 web worker 环境中,是不能直接操作 DOM。

通过 ElementRef 我们就可以封装不同平台下视图层中的 native 元素 (在浏览器环境中,native 元素通常是指 DOM 元素),最后借助于 Angular 提供的强大的依赖注入特性,我们就可以轻松地访问到 native 元素。

angular2有生命周期钩子AfterViewInit可以帮助我们在view加载完之后再执行相应的ts

ts:

import { Component, ElementRef ,AfterViewInit} from '@angular/core';

exportclassAppComponent { 

constructor(privateelementRef: ElementRef) {

 }

ngAfterViewInit() {

  let divEle =this.elementRef.nativeElement.querySelector('div');//获取第一个div

  console.dir(divEle);

  let div = doxcument.getElementById("div");  //获取id为‘div'的节点

}

}

下面有一种优化方案,运用angular内置属性装饰器@ViewChild

ts:

import{ Component, ElementRef, ViewChild, AfterViewInit }from'@angular/core';

exportclassAppComponent{

@ViewChild('greet')

 greetDiv: ElementRef;

ngAfterViewInit() {this.greetDiv.nativeElement.style.backgroundColor ='red'; }

}

html:

<div #greet>hello world</div>  //element的标识"#name",@ViewChild根据这个搜索元素

angular中怎么获取dom元素

步骤分解:

第一步:给要获取的元素一个ng-model变量,并且绑定事件啦!

<div class="home" ng-model="dirName"  ng-mouseenter="switchImage($event,dirName)"></div>  //给要获取的元素一个ng-model变量

第二步:在controller中利用$event.target获取dom元素即可!

$scope.switchImage = function($event, value) { 
      3       $($event.target).on("mouseenter mouseleave",function(e) {
         var w = $(this).width(); // 得到盒子宽度
         var h = $(this).height();// 得到盒子高度
         var x = (e.pageX - this.offsetLeft - (w / 2)) * (w > h ? (h / w) : 1);
         // 获取x值
         var y = (e.pageY - this.offsetTop - (h / 2)) * (h > w ? (w / h) : 1);
         // 获取y值
         var direction = Math.round((((Math.atan2(y, x) * (180 / Math.PI)) + 180) / 90) + 3) % 4; 





//direction的值为“0,1,2,3”分别对应着“上,右,下,左”
         // 将点的坐标对应的弧度值换算成角度度数值
         var dirName = new Array('上方','右侧','下方','左侧');
         if(e.type == 'mouseenter' && direction == 1){
           $(this).find('.profil-photo').html(dirName[direction]+'离开');







}else{ 
 





 $(this).find('.profil-photo').html(dirName[direction]+'离开'); 





} 




}); 



}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript 给汉字排序实例代码
Jun 28 Javascript
JQuery live函数
Dec 24 Javascript
javascript学习笔记(二十) 获得和设置元素的特性(属性)
Jun 20 Javascript
JavaScript 获取任一float型小数点后两位的小数
Jun 30 Javascript
BootStrap与validator 使用笔记(JAVA SpringMVC实现)
Sep 21 Javascript
JS实现页面进入和返回定位到具体位置
Dec 08 Javascript
微信jssdk逻辑在vue中的运用详解
Nov 14 Javascript
支付宝小程序自定义弹窗dialog插件的实现代码
Nov 30 Javascript
Angular8基础应用之表单及其验证
Aug 11 Javascript
Layui 解决表格异步调用后台分页的问题
Oct 26 Javascript
微信小程序激励式视频广告组件使用详解
Dec 06 Javascript
vue-treeselect的基本用法以及解决点击无法出现拉下菜单
Apr 30 Vue.js
Vuejs中使用markdown服务器端渲染的示例
Nov 22 #Javascript
浅谈Vue-cli 命令行工具分析
Nov 22 #Javascript
JavaScript数据结构与算法之队列原理与用法实例详解
Nov 22 #Javascript
深入理解Vue官方文档梳理之全局API
Nov 22 #Javascript
初识 Vue.js 中的 *.Vue文件
Nov 22 #Javascript
chorme 浏览器记住密码后input黄色背景处理方法(两种)
Nov 22 #Javascript
基于JavaScript实现表格滚动分页
Nov 22 #Javascript
You might like
文章推荐系统(二)
2006/10/09 PHP
利用discuz自带通行证整合dedecms的方法以及文件下载
2007/03/06 PHP
优化PHP代码的53条建议
2008/03/27 PHP
PHP大文件切割上传并带进度条功能示例
2019/07/01 PHP
JavaScript编程开发中的五个实用小技巧
2010/07/22 Javascript
Jquery常用技巧收集整理篇
2010/11/14 Javascript
JavaScript中通过prototype属性共享属性和方法的技巧实例
2015/03/13 Javascript
jQuery使用attr()方法同时设置多个属性值用法实例
2015/03/26 Javascript
jquery实现的仿天猫侧导航tab切换效果
2015/08/24 Javascript
JavaScript中日期的相关操作方法总结
2015/10/24 Javascript
JS中的hasOwnProperty()和isPrototypeOf()属性实例详解
2016/08/11 Javascript
js获取页面引用的css样式表中的属性值方法(推荐)
2016/08/19 Javascript
jQuery简单实现列表隐藏和显示效果示例
2016/09/12 Javascript
原生ajax处理json格式数据的实例代码
2016/12/25 Javascript
js判断手机系统是android还是ios
2017/03/07 Javascript
vue弹窗插件实战代码
2018/09/08 Javascript
在node环境下parse Smarty模板的使用示例代码
2019/11/15 Javascript
Python多线程下载文件的方法
2015/07/10 Python
Python更新数据库脚本两种方法及对比介绍
2017/07/27 Python
Python实现的视频播放器功能完整示例
2018/02/01 Python
python发送邮件脚本
2018/05/22 Python
Python加载带有注释的Json文件实例
2018/05/23 Python
利用django+wechat-python-sdk 创建微信服务器接入的方法
2019/02/20 Python
docker-py 用Python调用Docker接口的方法
2019/08/30 Python
python实现控制台输出彩色字体
2020/04/05 Python
前端面试必备之html5的新特性
2017/09/05 HTML / CSS
GNC健安喜官方海外旗舰店:美国著名保健品牌
2017/01/04 全球购物
NBA德国官方网上商店:NBA Store德国
2018/04/13 全球购物
教师自我评价范文
2013/12/16 职场文书
母亲节感恩活动记录
2014/03/16 职场文书
2014党员学习《反腐倡廉警示教育读本》思想汇报
2014/09/13 职场文书
股东出资证明书(正规版)
2014/09/24 职场文书
培训督导岗位职责
2015/04/10 职场文书
2015重阳节敬老活动总结
2015/07/29 职场文书
python numpy中setdiff1d的用法说明
2021/04/22 Python
Nginx本地配置SSL访问的实例教程
2022/05/30 Servers