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 相关文章推荐
用YUI做了个标签浏览效果
Feb 20 Javascript
Js实现当前点击a标签变色突出显示其他a标签回复原色
Nov 27 Javascript
javascript中with()方法的语法格式及使用
Aug 04 Javascript
js实现网页标题栏闪烁提示效果实例分析
Nov 20 Javascript
jquery淡入淡出效果简单实例
Jan 14 Javascript
AngularJS实现单独作用域内的数据操作
Sep 05 Javascript
简单的js计算器实现
Oct 26 Javascript
JavaScript获取移动设备型号的实现代码(JS获取手机型号和系统)
Mar 10 Javascript
弱类型语言javascript开发中的一些坑实例小结【变量、函数、数组、对象、作用域等】
Aug 07 Javascript
JavaScript 中的无穷数(Infinity)详解
Feb 13 Javascript
基于vue+echarts 数据可视化大屏展示的方法示例
Mar 09 Javascript
JavaScript array常用方法代码实例详解
Sep 02 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 开发环境配置(Zend Studio)
2010/04/28 PHP
PHP文件缓存类示例分享
2015/01/30 PHP
[原创]PHP实现逐行删除文件右侧空格的方法
2015/12/25 PHP
PHP实现向关联数组指定的Key之前插入元素的方法
2017/06/06 PHP
PHP For循环字母A-Z当超过26个字母时输出AA,AB,AC
2020/02/16 PHP
广告显示判断
2006/08/31 Javascript
Dom 结点创建 基础知识
2011/10/01 Javascript
用JavaScript显示浏览器客户端信息的超相近教程
2015/06/18 Javascript
AngularJS ng-change 指令的详解及简单实例
2016/07/30 Javascript
WEB 前端开发中防治重复提交的实现方法
2016/10/26 Javascript
node.js缺少mysql模块运行报错的解决方法
2016/11/13 Javascript
如何解决jQuery EasyUI 已打开Tab重新加载问题
2016/12/19 Javascript
JavaScript使用原型和原型链实现对象继承的方法详解
2017/04/05 Javascript
微信小程序页面传值实例分析
2017/04/19 Javascript
在Vue中使用highCharts绘制3d饼图的方法
2018/02/08 Javascript
浅谈React高阶组件
2018/03/28 Javascript
浅谈Postman解决token传参的问题
2018/03/31 Javascript
js 实现watch监听数据变化的代码
2019/10/13 Javascript
使用JS来动态操作css的几种方法
2019/12/18 Javascript
JS函数参数的传递与同名参数实例分析
2020/03/16 Javascript
[02:56]DOTA2上海特锦赛小组赛解说FreeAgain采访花絮
2016/02/27 DOTA
简单的抓取淘宝图片的Python爬虫
2014/12/25 Python
Python2.x利用commands模块执行Linux shell命令
2016/03/11 Python
Python实现基于多线程、多用户的FTP服务器与客户端功能完整实例
2017/08/18 Python
selenium+python实现自动登录脚本
2018/04/22 Python
python解析含有重复key的json方法
2019/01/22 Python
Python itertools.product方法代码实例
2020/03/27 Python
python excel和yaml文件的读取封装
2021/01/12 Python
python的scipy.stats模块中正态分布常用函数总结
2021/02/19 Python
HTML5本地存储和本地数据库实例详解
2017/09/05 HTML / CSS
国际花店:Pickup Flowers
2020/04/10 全球购物
应届行政管理专业个人自我评价
2013/12/28 职场文书
会计学自荐信
2014/06/03 职场文书
金融与证券专业求职信
2014/06/22 职场文书
2014年乡镇妇联工作总结
2014/12/02 职场文书
大学感恩节活动总结
2015/05/05 职场文书