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 相关文章推荐
js操作ajax返回的json的注意问题!
Feb 23 Javascript
改善用户体验的五款jQuery插件分享
May 22 Javascript
基于jquery的当鼠标滚轮到最底端继续加载新数据思路分享(多用于微博、空间、论坛 )
Oct 10 Javascript
基于JQuery实现鼠标点击文本框显示隐藏提示文本
Feb 23 Javascript
解决Jquery鼠标经过不停滑动的问题
Mar 03 Javascript
微信小程序 蓝牙的实现实例代码
Jun 27 Javascript
vue2.0路由切换后页面滚动位置不变BUG的解决方法
Mar 14 Javascript
Vue项目中如何引入icon图标
Mar 28 Javascript
no-vnc和node.js实现web远程桌面的完整步骤
Aug 11 Javascript
如何实现echarts markline标签名显示自己想要的
Jul 20 Javascript
前端vue如何使用高德地图
Nov 05 Javascript
JS实现数组去重的11种方法总结
Apr 04 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
js代码实现微博导航栏
2015/07/30 PHP
thinkphp3.2实现上传图片的控制器方法
2016/04/28 PHP
javascript 操作文件 实现方法小结
2009/07/02 Javascript
js获取当前月的第一天和最后一天的小例子
2013/11/18 Javascript
利用js实现前台动态添加文本框,后台获取文本框内容(示例代码)
2013/11/25 Javascript
用js将内容复制到剪贴板兼容浏览器
2014/03/18 Javascript
Jquery对象和Dom对象的区别分析
2014/11/20 Javascript
jQuery实现仿淘宝带有指示条的图片转动切换效果完整实例
2015/03/04 Javascript
Backbone.js框架中简单的View视图编写学习笔记
2016/02/14 Javascript
JS简单实现禁止访问某个页面的方法
2016/09/13 Javascript
使用jQuery卸载全部事件的思路详解
2017/04/03 jQuery
Node.js dgram模块实现UDP通信示例代码
2017/09/26 Javascript
JS数组方法concat()用法实例分析
2020/01/18 Javascript
微信小程序复选框实现多选一功能过程解析
2020/02/14 Javascript
TypeScript的安装、使用、自动编译的实现
2020/04/10 Javascript
修改NPM全局模式的默认安装路径的方法
2020/12/15 Javascript
[06:10]6.81新信使新套装!给你一个炫酷的DOTA2
2014/05/06 DOTA
[49:13]DOTA2上海特级锦标赛C组资格赛#1 OG VS LGD第一局
2016/02/27 DOTA
Python基于select实现的socket服务器
2016/04/13 Python
Python使用matplotlib绘制多个图形单独显示的方法示例
2018/03/14 Python
pandas 使用apply同时处理两列数据的方法
2018/04/20 Python
python实现简单淘宝秒杀功能
2018/05/03 Python
python增加图像对比度的方法
2019/07/12 Python
Python math库 ln(x)运算的实现及原理
2019/07/17 Python
TensorFlow 多元函数的极值实例
2020/02/10 Python
Python 实现将大图切片成小图,将小图组合成大图的例子
2020/03/14 Python
pip已经安装好第三方库但pycharm中import时还是标红的解决方案
2020/10/09 Python
Amaze UI 文件选择域的示例代码
2020/08/26 HTML / CSS
意大利顶级奢侈品电商:LUISAVIAROMA(支持中文)
2020/05/26 全球购物
青奥会口号
2014/06/12 职场文书
志愿者爱心公益活动策划方案
2014/09/15 职场文书
单位作风建设自查报告
2014/10/23 职场文书
一般基层干部群众路线教育实践活动个人对照检查材料
2014/11/04 职场文书
运动会通讯稿200字
2015/07/20 职场文书
家庭教育教师培训学习体会
2016/01/14 职场文书
pytorch锁死在dataloader(训练时卡死)
2021/05/28 Python