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 相关文章推荐
跨浏览器开发经验总结(四) 怎么写入剪贴板
May 13 Javascript
JS获取当前网页大小以及屏幕分辨率等
Sep 05 Javascript
深入浅析JavaScript中的arguments对象(强力推荐)
Jun 03 Javascript
返回函数的JavaScript函数
Jun 14 Javascript
easyui-combobox 实现简单的自动补全功能示例
Nov 08 Javascript
Vim快速合并行及vim 将文件所有行合并到一行
Nov 27 Javascript
jQuery.validate.js表单验证插件的使用代码详解
Oct 22 jQuery
vue.js实现数据库的JSON数据输出渲染到html页面功能示例
Aug 03 Javascript
Js on及addEventListener原理用法区别解析
Jul 11 Javascript
jQuery实现图片切换效果
Oct 19 jQuery
微信小程序实现日历小功能
Nov 18 Javascript
Javascript生成器(Generator)的介绍与使用
Jan 31 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
历史证明,懒惰才是推动科学发展技术进步的动力
2021/03/02 无线电
PHP 5.0对象模型深度探索之对象复制
2008/03/27 PHP
PHP调用MySQL的存储过程的实现代码
2008/08/12 PHP
php设计模式小结
2013/02/15 PHP
探讨Smarty中如何获取数组的长度以及smarty调用php函数的详解
2013/06/20 PHP
解析smarty 截取字符串函数 truncate的用法介绍
2013/06/20 PHP
php中通过curl检测页面是否被百度收录
2013/09/27 PHP
详解PHP如何更好的利用PHPstorm的自动提示
2017/08/18 PHP
PHP中的浅复制与深复制的实例详解
2017/10/26 PHP
js实现权限树的更新权限时的全选全消功能
2009/02/17 Javascript
基于jquery的一个OutlookBar类,动态创建导航条
2010/11/19 Javascript
WordPress中利用AJAX异步获取评论用户头像的方法
2016/01/08 Javascript
JS自定义函数对web前端上传的文件进行类型大小判断
2016/10/19 Javascript
Vue js 的生命周期(看了就懂)(推荐)
2019/03/29 Javascript
微信小程序框架的页面布局代码
2019/08/17 Javascript
layui实现把数据表格时间戳转换为时间格式的例子
2019/09/12 Javascript
layui+SSM的数据表的增删改实例(利用弹框添加、修改)
2019/09/27 Javascript
[03:22]DSPL第一期精彩集锦:酷炫到底!
2014/11/07 DOTA
Python itertools模块详解
2015/05/09 Python
基于python实现微信模板消息
2015/12/21 Python
python实发邮件实例详解
2019/11/11 Python
Django3.0 异步通信初体验(小结)
2019/12/04 Python
Python Django中的STATIC_URL 设置和使用方式
2020/03/27 Python
基于Python测试程序是否有错误
2020/05/16 Python
keras 读取多标签图像数据方式
2020/06/12 Python
HTML5 canvas 瀑布流文字效果的示例代码
2018/01/31 HTML / CSS
丝绸和人造花卉、植物和树木:Nearly Natural
2018/11/28 全球购物
LUISAVIAROMA中国官网:时尚奢侈品牌购物网站
2020/11/01 全球购物
销售代表求职自荐信
2013/10/01 职场文书
公司出纳岗位职责
2013/12/07 职场文书
珍惜水资源建议书
2014/03/12 职场文书
村级换届选举方案
2014/05/10 职场文书
上课迟到检讨书300字
2014/10/15 职场文书
银行大堂经理培训心得体会
2016/01/09 职场文书
小学体育跳绳课教学反思
2016/02/16 职场文书
Java练习之潜艇小游戏的实现
2022/03/16 Java/Android