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 相关文章推荐
jQuery图片预加载 等比缩放实现代码
Oct 04 Javascript
jQuery的attr与prop使用介绍
Oct 10 Javascript
js select option对象小结
Dec 20 Javascript
详解JavaScript中undefined与null的区别
Mar 29 Javascript
JavaScript函数节流和函数防抖之间的区别
Feb 15 Javascript
vue2项目使用sass的示例代码
Jun 28 Javascript
js实现鼠标跟随运动效果
Aug 02 Javascript
react 兄弟组件如何调用对方的方法示例
Oct 23 Javascript
Vue常用的几个指令附完整案例
Nov 06 Javascript
es6函数之rest参数用法实例分析
Apr 18 Javascript
解决vant-UI库修改样式无效的问题
Nov 03 Javascript
JavaScript实现无限轮播效果
Nov 19 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
基于mysql的论坛(5)
2006/10/09 PHP
mysql 搜索之简单应用
2007/04/27 PHP
php求数组全排列,元素所有组合的方法总结
2017/03/14 PHP
PHP+MySql实现一个简单的留言板
2020/07/19 PHP
jquery.validate使用攻略 第三部
2010/07/01 Javascript
js substr、substring和slice使用说明小记
2011/09/15 Javascript
JavaScript的9种继承实现方式归纳
2015/05/18 Javascript
jQuery插件简单学习实例教程
2016/07/01 Javascript
JS实现的表头列头固定页面功能示例
2017/01/10 Javascript
JS实现本地存储信息的方法(基于localStorage与userData)
2017/02/18 Javascript
Vue制作Todo List网页
2017/04/26 Javascript
Jquery EasyUI $.Parser
2017/06/02 jQuery
详解在Vue中使用TypeScript的一些思考(实践)
2018/07/06 Javascript
微信小程序form表单组件示例代码
2018/07/15 Javascript
node.js微信小程序配置消息推送的实现
2019/02/13 Javascript
浅谈layui框架自带分页和表格重载的接口解析问题
2019/09/11 Javascript
VUE 组件转换为微信小程序组件的方法
2019/11/06 Javascript
Vue axios 跨域请求无法带上cookie的解决
2020/09/08 Javascript
Python GAE、Django导出Excel的方法
2008/11/24 Python
Python实现抓取城市的PM2.5浓度和排名
2015/03/19 Python
Python爬虫实现网页信息抓取功能示例【URL与正则模块】
2017/05/18 Python
Numpy中矩阵matrix读取一列的方法及数组和矩阵的相互转换实例
2018/07/02 Python
django自定义模板标签过程解析
2019/12/14 Python
python装饰器代替set get方法实例
2019/12/19 Python
Python文件操作及内置函数flush原理解析
2020/10/13 Python
scrapy头部修改的方法详解
2020/12/06 Python
开发人员所需要知道的HTML5性能分析面面观
2012/07/05 HTML / CSS
Superdry瑞典官网:英国日本街头风品牌
2017/05/17 全球购物
戴尔荷兰官方网站:Dell荷兰
2020/10/04 全球购物
护士个人简历自荐信
2013/10/18 职场文书
教师考核评语
2014/04/28 职场文书
承租经营合作者协议书
2014/10/01 职场文书
餐厅保洁员岗位职责
2015/04/10 职场文书
导游词之江苏溱潼古镇
2019/11/27 职场文书
详解JavaScript中的执行上下文及调用堆栈
2021/04/29 Javascript
Java比较两个对象中全部属性值是否相等的方法
2021/08/07 Java/Android