详解如何在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 相关文章推荐
一个简单的Ext.XTemplate的实例代码
Mar 18 Javascript
在javascript中执行任意html代码的方法示例解读
Dec 25 Javascript
JQuery.get提交页面不跳转的解决方法
Jan 13 Javascript
JS原型、原型链深入理解
Feb 27 Javascript
JavaScript学习笔记整理_简单实现枚举类型,扑克牌应用
Sep 19 Javascript
Javascript自定义事件详解
Jan 13 Javascript
jQuery实现动态删除LI的方法
May 30 jQuery
微信小程序实现多个按钮toggle功能的实例
Jun 13 Javascript
详解小程序设置缓存并且不覆盖原有数据
Apr 15 Javascript
细说webpack6 Babel的使用详解
Sep 26 Javascript
jquery轮播图插件使用方法详解
Jul 31 jQuery
js实现鼠标点击飘爱心效果
Aug 19 Javascript
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
php cookie 作用范围?不要在当前页面使用你的cookie
2009/03/24 PHP
php中CI操作多个数据库的代码
2012/07/05 PHP
linux实现php定时执行cron任务详解
2013/12/24 PHP
javascript+php实现根据用户时区显示当地时间的方法
2015/03/11 PHP
CI框架实现cookie登陆的方法详解
2016/05/18 PHP
Jquery Ajax学习实例6 向WebService发出请求,返回DataSet(XML) 异步调用
2010/03/18 Javascript
将string解析为json的几种方式小结
2010/11/11 Javascript
JavaScript 大数据相加的问题
2011/08/03 Javascript
jQuery选择器querySelector的使用指南
2015/01/23 Javascript
JavaScript设计模式学习之“类式继承”
2015/03/12 Javascript
谈谈Jquery中的children find 的区别有哪些
2015/10/19 Javascript
jquery显示隐藏元素的实现代码
2016/05/19 Javascript
javascript 数组的正态分布排序的问题
2016/07/31 Javascript
微信小程序 弹框和模态框实现代码
2017/03/10 Javascript
BootStrap中jQuery插件Carousel实现轮播广告效果
2017/03/27 jQuery
Koa2微信公众号开发之本地开发调试环境搭建
2018/05/16 Javascript
微信小程序获取用户绑定手机号方法示例
2019/07/21 Javascript
vue+element搭建后台小总结 el-dropdown下拉功能
2020/04/10 Javascript
详解Vue3 Teleport 的实践及原理
2020/12/02 Vue.js
python之模拟鼠标键盘动作具体实现
2013/12/30 Python
PyChar学习教程之自定义文件与代码模板详解
2017/07/17 Python
python实现排序算法解析
2018/09/08 Python
Python中创建二维数组
2018/10/17 Python
python区块及区块链的开发详解
2019/07/03 Python
python单例模式的多种实现方法
2019/07/26 Python
Python @property装饰器原理解析
2020/01/22 Python
Python使用socket_TCP实现小文件下载功能
2020/10/09 Python
Python环境配置实现pip加速过程解析
2020/11/27 Python
Moda Operandi官网:美国奢侈品电商,海淘秀场T台同款
2020/05/26 全球购物
导游实习生自荐书
2014/01/28 职场文书
年终晚会主持词
2014/03/25 职场文书
办公室主任四风问题对照检查材料思想汇报
2014/09/28 职场文书
写给孩子的新学期寄语
2015/02/27 职场文书
《鸡兔同笼》教学反思
2016/02/19 职场文书
详解python字符串驻留技术
2021/05/21 Python
python引入其他文件夹下的py文件具体方法
2021/05/23 Python