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 相关文章推荐
JavaScript 编程引入命名空间的方法
Jun 29 Javascript
JQuery 选项卡效果(JS与HTML的分离)
Apr 01 Javascript
为radio类型的INPUT添加客户端脚本(附加实现JS来禁用onClick事件思路代码)
Nov 11 Javascript
Js放到HTML文件中的哪个位置有什么区别
Aug 21 Javascript
使用js检测浏览器是否支持html5中的video标签的方法
Mar 12 Javascript
JS截取字符串实例详解
Nov 24 Javascript
jQuery实现调整表格单列顺序完整实例
Jun 20 Javascript
JavaScript鼠标事件,点击鼠标右键,弹出div的简单实例
Aug 03 Javascript
Vue 固定头 固定列 点击表头可排序的表格组件
Nov 25 Javascript
BackBone及其实例探究_动力节点Java学院整理
Jul 14 Javascript
使用react render props实现倒计时的示例代码
Dec 06 Javascript
微信小程序图表插件wx-charts用法实例详解
May 20 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+mysql扎实个人基本功
2008/03/27 PHP
PHP和javascript常用正则表达式及用法实例
2014/07/01 PHP
php resizeimage 部分jpg文件 生成缩略图失败的原因分析及解决办法
2016/03/23 PHP
浅谈PHP的反射API
2017/02/26 PHP
PHP大文件分片上传的实现方法
2018/10/28 PHP
一文看懂PHP进程管理器php-fpm
2020/06/01 PHP
javascript实现的在当前窗口中漂浮框的代码
2010/03/15 Javascript
前端开发必须知道的JS之原型和继承
2010/07/06 Javascript
基于Jquery的动态添加控件并取值的实现代码
2010/09/24 Javascript
通过AJAX的JS、JQuery两种方式解析XML示例介绍
2013/09/23 Javascript
node.js中的fs.openSync方法使用说明
2014/12/17 Javascript
jQuery实现鼠标双击Table单元格变成文本框及输入内容后更新到数据库的方法
2015/11/25 Javascript
jQuery表格插件datatables用法汇总
2016/03/29 Javascript
深入理解js generator数据类型
2016/08/16 Javascript
浅析Vue自定义组件的v-model
2017/11/26 Javascript
Vue监听页面刷新和关闭功能
2019/06/20 Javascript
Vue router安装及使用方法解析
2020/12/02 Vue.js
Python中几个比较常见的名词解释
2015/07/04 Python
python控制台中实现进度条功能
2015/11/10 Python
python中OrderedDict的使用方法详解
2017/05/05 Python
小白如何入门Python? 制作一个网站为例
2018/03/06 Python
Python利用splinter实现浏览器自动化操作方法
2018/05/11 Python
python3.6的venv模块使用详解
2018/08/01 Python
Python3.6.2调用ffmpeg的方法
2019/01/10 Python
python使用threading.Condition交替打印两个字符
2019/05/07 Python
Python获取基金网站网页内容、使用BeautifulSoup库分析html操作示例
2019/06/04 Python
django url到views参数传递的实例
2019/07/19 Python
浅谈Python 敏感词过滤的实现
2019/08/15 Python
python生成器/yield协程/gevent写简单的图片下载器功能示例
2019/10/28 Python
python正则表达式实例代码
2020/03/03 Python
Pycharm常用快捷键总结及配置方法
2020/11/14 Python
用python发送微信消息
2020/12/21 Python
竞选班干部演讲稿100字
2014/08/20 职场文书
学生通报表扬范文
2015/05/04 职场文书
运动会通讯稿100字
2015/07/20 职场文书
matlab xlabel位置的设置方式
2021/05/21 Python