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 相关文章推荐
Save a File Using a File Save Dialog Box
Jun 18 Javascript
javascript 动态参数判空操作
Dec 22 Javascript
window.showModalDialog参数传递中含有特殊字符的处理方法
Jun 06 Javascript
Jquery操作radio的简单实例
Jan 06 Javascript
JQuery调用WebServices的方法和4个实例
May 06 Javascript
javascript里使用php代码实例
Dec 13 Javascript
使用JavaScript+canvas实现图片裁剪
Jan 30 Javascript
谈谈AngularJs中的隐藏和显示
Dec 09 Javascript
Bootstrap分页插件之Bootstrap Paginator实例详解
Oct 15 Javascript
vue-router3.0版本中 router.push 不能刷新页面的问题
May 10 Javascript
如何通过JS实现转码与解码
Feb 21 Javascript
vue-cli3.x配置全局的scss的时候报错问题及解决
Apr 30 Vue.js
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中preg_replace_callback函数简单用法示例
2016/07/21 PHP
PHP扩展Swoole实现实时异步任务队列示例
2019/04/13 PHP
javascript TextArea动态显示剩余字符
2008/10/22 Javascript
简短几句jquery代码的实现一个图片向上滚动切换
2011/09/02 Javascript
javascript面向对象包装类Class封装类库剖析
2013/01/24 Javascript
Js中setTimeout()和setInterval() 何时被调用执行的用法
2013/04/12 Javascript
document.documentElement和document.body区别介绍
2013/09/16 Javascript
JavaScript onkeydown事件入门实例(键盘某个按键被按下)
2014/10/17 Javascript
angularJS中$apply()方法详解
2015/01/07 Javascript
JavaScript控制table某列不显示的方法
2015/03/16 Javascript
在JavaScript中处理数组之reverse()方法的使用
2015/06/09 Javascript
JavaScript实现的MD5算法完整实例
2016/02/02 Javascript
AngularJS中watch监听用法分析
2016/11/04 Javascript
如何处理JSON中的特殊字符
2016/11/30 Javascript
jQuery的$.extend 浅拷贝与深拷贝
2017/03/08 Javascript
详解vue-cli + webpack 多页面实例配置优化方法
2017/07/13 Javascript
详解Vue中一种简易路由传参办法
2017/09/15 Javascript
深入理解React高阶组件
2017/09/28 Javascript
Layui tree 下拉菜单树的实例代码
2019/09/21 Javascript
javascript实现点亮灯泡特效示例
2019/10/15 Javascript
javascript 使用sleep函数的常见方法详解
2020/04/26 Javascript
pip 错误unused-command-line-argument-hard-error-in-future解决办法
2014/06/01 Python
Python实现的数据结构与算法之链表详解
2015/04/22 Python
Python如何抓取天猫商品详细信息及交易记录
2018/02/23 Python
Python的numpy库中将矩阵转换为列表等函数的方法
2018/04/04 Python
使用phonegap检测网络状态的方法
2017/03/30 HTML / CSS
html5中canvas学习笔记1-画板的尺寸与实际显示尺寸
2013/01/06 HTML / CSS
如何安装ruby on rails
2014/02/09 面试题
教师自我鉴定范文
2013/11/10 职场文书
教师求职推荐信范文
2013/11/20 职场文书
中班中秋节活动反思
2014/02/18 职场文书
技校毕业生个人学习的自我评价
2014/02/21 职场文书
会计的岗位职责
2014/03/15 职场文书
2014高中生入党思想汇报范文
2014/09/13 职场文书
2014年共青团工作总结
2014/12/10 职场文书
铁头也玩根德 YachtBoy YB-230......
2022/04/05 无线电