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 文本框使用小结
May 22 Javascript
Chrome中模态对话框showModalDialog返回值问题的解决方法
May 25 Javascript
jquery 利用show和hidden实现级联菜单示例代码
Aug 09 Javascript
使用JQuery实现智能表单验证功能
Mar 08 Javascript
angularjs 中$apply,$digest,$watch详解
Oct 13 Javascript
ionic实现下拉刷新载入数据功能
May 11 Javascript
jquery.uploadView 实现图片预览上传功能
Aug 10 jQuery
node文字生成图片的示例代码
Oct 26 Javascript
bootstrap-Treeview实现级联勾选
Nov 23 Javascript
微信小程序列表渲染功能之列表下拉刷新及上拉加载的实现方法分析
Nov 27 Javascript
微信小程序使用modal组件弹出对话框功能示例
Nov 29 Javascript
微信小程序用户登录和登录态维护的实现
Dec 10 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的ob_start();控制您的浏览器cache!
2006/11/25 PHP
探讨php中header的用法详解
2013/06/07 PHP
如何用C语言编写PHP扩展的详解
2013/06/13 PHP
PHP实现更新中间关联表数据的两种方法
2014/09/01 PHP
thinkphp在模型中自动完成session赋值示例代码
2014/09/09 PHP
PHP实现清除MySQL死连接的方法
2016/07/23 PHP
实例讲解通过​PHP创建数据库
2019/01/20 PHP
document.body.scrollTop 值总为0的解决方法 比较常见的标准问题
2009/11/30 Javascript
Javascript操作cookie的函数代码
2012/10/03 Javascript
JS代码同步文本框内容的实例方法
2013/07/12 Javascript
文本框只能选择数据到文本框禁止手动输入
2013/11/22 Javascript
jQuery表格插件ParamQuery简单使用方法示例
2013/12/05 Javascript
JavaScript使用DeviceOne开发实战(四)仿优酷视频应用
2015/12/02 Javascript
Summernote实现图片上传功能的简单方法
2016/07/11 Javascript
微信小程序支付前端源码
2018/08/29 Javascript
详解angular2如何手动点击特定元素上的点击事件
2018/10/16 Javascript
jQuery实现聊天对话框
2020/02/08 jQuery
vue.js this.$router.push获取不到params参数问题
2020/03/03 Javascript
原生JavaScript创建不可变对象的方法简单示例
2020/05/07 Javascript
vue+Element-ui实现登录注册表单
2020/11/17 Javascript
vue 实现图片懒加载功能
2020/12/31 Vue.js
Python实现八皇后问题示例代码
2018/12/09 Python
将labelme格式数据转化为标准的coco数据集格式方式
2020/02/17 Python
Python中常用的高阶函数实例详解
2020/02/21 Python
Django用户身份验证完成示例代码
2020/04/03 Python
Django用户登录与注册系统的实现示例
2020/06/03 Python
英国高端食品和葡萄酒超市:Waitrose
2016/08/23 全球购物
美国大尺码女装零售商:TORRID
2016/10/01 全球购物
澳大利亚时尚前卫设计师珠宝在线:Amber Sceats
2017/10/04 全球购物
意大利制造的西装、衬衫和针对男士量身定制的服装:Lanieri
2018/04/08 全球购物
大学毕业生最详细的自我评价分享
2013/11/18 职场文书
新闻专业推荐信范文
2013/11/20 职场文书
大学生自荐信
2013/12/11 职场文书
企业员工集体活动方案
2014/08/17 职场文书
诚信承诺书
2015/01/19 职场文书
Java网络编程之UDP实现原理解析
2021/09/04 Java/Android