AngularJS实现给动态生成的元素绑定事件的方法


Posted in Javascript onDecember 14, 2016

本文实例讲述了AngularJS实现给动态生成的元素绑定事件的方法。分享给大家供大家参考,具体如下:

1 . 我们知道在jQuery中,动态生成一个元素,如果要在动态生成元素的同时,动态绑定事件,可以通过live/on方法(在jquery3.0中已经废除了bind方法)。

2 . 在AngularJS中,操作DOM一般在指令中完成,事件监听机制是在对于已经静态生成的dom绑定事件,而如果在指令中动态生成了DOM节点,动态生成的节点不会被JS事件监听。

举例来说:

angular.module('myapp',[])
.directive('myText',function(){
  return{
    restrict:'A',
    template:'<div ng-click="hello()">Hi everyone</div>',
    link:function(scope,ele,attr){
    }
  }
})

这个指令中,会生成新的DOM节点:

<div ng-click="hello()">Hi everyone</div>

但是如果不做处理,这里的ng-click事件并不能实现,因为事件的监听在静态html页面生成时候已经完成。那么如何给动态生成的元素,绑定事件,实现事件的动态监听呢?

3 . 通过$compile服务,编译DOM,实现动态的事件绑定

var template:'<div ng-click="hello()">Hi everyone</div>',
var content = $compile(template)(scope);

通过这两句,首先先编译DOM,然后用编译后的DOM加入到之前的静态节点中,就能实现动态绑定事件,之类注意,应该注入$compile service

.directive('myText',function($compile){})

完整的代码如下:

angular.module('myapp',[])
.directive('myText',function($compile){
  var template:'<div ng-click="hello()">Hi everyone</div>',
  return{
    restrict:'A',
    link:function(scope,ele,attr){
       ele.on("click", function() {
        scope.$apply(function() {
          var content = $compile(template)(scope);
          element.append(content);
        })
      });
    }
  }
})

希望本文所述对大家AngularJS程序设计有所帮助。

Javascript 相关文章推荐
JavaScript 读取元素的CSS信息的代码
Feb 07 Javascript
Javascript load Page,load css,load js实现代码
Mar 31 Javascript
Extjs4 GridPanel的主要配置参数详细介绍
Apr 18 Javascript
javascript实现行拖动的方法
May 27 Javascript
jquery+CSS3模拟Path2.0动画菜单效果代码
Aug 31 Javascript
jquery+ajax+text文本框实现智能提示完整实例
Jul 09 Javascript
基于VUE.JS的移动端框架Mint UI的使用
Oct 11 Javascript
vue中实现图片和文件上传的示例代码
Mar 16 Javascript
layui的table中显示图片方法
Aug 17 Javascript
原生javascript的ajax请求及后台PHP响应操作示例
Feb 24 Javascript
vue使用exif获取图片旋转,压缩的示例代码
Dec 11 Vue.js
JavaScript实现跟随鼠标移动的盒子
Jan 28 Javascript
Bootstrap导航条的使用和理解3
Dec 14 #Javascript
jQuery学习笔记之入门
Dec 14 #Javascript
Bootstrap轮播图的使用和理解4
Dec 14 #Javascript
12 款 JS 代码测试必备工具(翻译)
Dec 13 #Javascript
使用BootStrap实现悬浮窗口的效果
Dec 13 #Javascript
关于微信jssdk实现多图片上传的一点心得分享
Dec 13 #Javascript
微信页面倒计时代码(解决safari不兼容date的问题)
Dec 13 #Javascript
You might like
用PHP实现的随机广告显示代码
2007/06/14 PHP
PHP性能优化工具篇Benchmark类调试执行时间
2011/12/06 PHP
使用php发送有附件的电子邮件-(PHPMailer使用的实例分析)
2013/04/26 PHP
解析htaccess伪静态的规则
2013/06/18 PHP
php设计模式之单例模式代码
2016/06/11 PHP
PHP isset()与empty()的使用区别详解
2017/02/10 PHP
php数据库的增删改查 php与javascript之间的交互
2017/08/31 PHP
laravel 去掉index.php伪静态的操作方法
2019/10/12 PHP
从数据结构的角度分析 for each in 比 for in 快的多
2013/07/07 Javascript
深入理解javascript中return的作用
2013/12/30 Javascript
JavaScript两种跨域技术全面介绍
2014/04/16 Javascript
Javascript中的return作用及javascript return关键字用法详解
2015/11/05 Javascript
javascript帧动画(实例讲解)
2017/09/02 Javascript
Vue 后台管理类项目兼容IE9+的方法示例
2019/02/20 Javascript
微信小程序中网络请求缓存的解决方法
2019/12/29 Javascript
Node.js中文件系统fs模块的使用及常用接口
2020/03/06 Javascript
基于vue项目设置resolves.alias: '@'路径并适配webstorm
2020/12/02 Vue.js
python字符串加密解密的三种方法分享(base64 win32com)
2014/01/19 Python
Python中正则表达式的详细教程
2015/04/30 Python
python获取指定时间差的时间实例详解
2017/04/11 Python
教你使用python画一朵花送女朋友
2018/03/29 Python
python绘制BA无标度网络示例代码
2019/11/21 Python
python GUI库图形界面开发之PyQt5切换按钮控件QPushButton详细使用方法与实例
2020/02/28 Python
解决jupyter运行pyqt代码内核重启的问题
2020/04/16 Python
python中的错误如何查看
2020/07/08 Python
css3实现3D色子翻转特效
2014/12/23 HTML / CSS
美国领先的奢侈美容零售商:Bluemercury
2017/07/26 全球购物
俄罗斯金苹果网上化妆品和香水商店:Goldapple
2019/12/01 全球购物
类的核心特性有哪些
2014/01/01 面试题
管理人员岗位职责
2015/02/14 职场文书
2015质检员个人年终工作总结
2015/10/23 职场文书
高中体育课教学反思
2016/02/16 职场文书
导游词之苏州寒山寺
2019/12/05 职场文书
详解Redis复制原理
2021/06/04 Redis
Java 超详细讲解ThreadLocal类的使用
2022/04/07 Java/Android
springboot创建的web项目整合Quartz框架的项目实践
2022/06/21 Java/Android