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 相关文章推荐
extjs 列表框(multiselect)的动态添加列表项的方法
Jul 31 Javascript
基于Jquery制作的幻灯片图集效果打包下载
Feb 12 Javascript
js几秒以后倒计时跳转示例
Dec 26 Javascript
js打造数组转json函数
Jan 14 Javascript
jQuery操作JSON的CRUD用法实例
Feb 25 Javascript
JS常用正则表达式总结【经典】
May 12 Javascript
深入理解vue中slot与slot-scope的具体使用
Jan 26 Javascript
vue几个常用跨域处理方式介绍
Feb 07 Javascript
小程序异步问题之多个网络请求依次执行并依次收集请求结果
May 05 Javascript
layui自定义验证,用ajax查询后台是否有重复数据,form.verify的例子
Sep 06 Javascript
谈谈IntersectionObserver懒加载的具体使用
Oct 15 Javascript
js canvas实现五子棋小游戏
Jan 22 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 mail 通过Windows的SMTP发送邮件失败的解决方案
2009/05/27 PHP
php array_pop()数组函数将数组最后一个单元弹出(出栈)
2011/07/12 PHP
PHP连接MySQL数据库并以json格式输出
2018/05/21 PHP
HTML TO JavaScript 转换
2006/06/26 Javascript
jQuery 1.0.2
2006/10/11 Javascript
js 浏览本地文件夹系统示例代码
2013/10/24 Javascript
jQuery 获取跨域XML(RSS)数据的相关总结分析
2016/05/18 Javascript
再谈Javascript中的基本类型和引用类型(推荐)
2016/07/01 Javascript
jQuery在ie6下无法设置select选中的解决方法详解
2016/09/20 Javascript
JS数组排序方法实例分析
2016/12/16 Javascript
纯js实现倒计时功能
2017/01/06 Javascript
Angular 4依赖注入学习教程之FactoryProvider配置依赖对象(五)
2017/06/04 Javascript
详解VUE 数组更新
2017/12/16 Javascript
Vue项目history模式下微信分享爬坑总结
2019/03/29 Javascript
javascript读取本地文件和目录方法详解
2020/08/06 Javascript
Python logging管理不同级别log打印和存储实例
2018/01/19 Python
浅谈flask中的before_request与after_request
2018/01/20 Python
tensorflow实现简单的卷积网络
2018/05/24 Python
浅谈numpy生成数组的零值问题
2018/11/12 Python
Python文件打开方式实例详解【a、a+、r+、w+区别】
2019/03/30 Python
python:目标检测模型预测准确度计算方式(基于IoU)
2020/01/18 Python
python 制作python包,封装成可用模块教程
2020/07/13 Python
用python实现一个简单计算器(完整DEMO)
2020/10/14 Python
python switch 实现多分支选择功能
2020/12/21 Python
巴基斯坦电子产品购物网站:Home Shopping
2017/09/14 全球购物
strlen的几种不同实现方法
2013/05/31 面试题
设计模式的基本要素是什么
2014/04/21 面试题
日语系毕业生推荐信
2013/11/11 职场文书
美容师的职业规划书
2013/12/27 职场文书
安全生产检讨书
2014/01/21 职场文书
销售人员职业生涯规划范文
2014/03/01 职场文书
2014年流动人口工作总结
2014/11/26 职场文书
2015年精神文明建设工作总结
2015/04/21 职场文书
致运动员赞词
2015/07/22 职场文书
Django开发RESTful API实现增删改查(入门级)
2021/05/10 Python
DjangoRestFramework 使用 simpleJWT 登陆认证完整记录
2021/06/22 Python