全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Angularjs 动态添加指令并绑定事件的方法

这两天学习了angularjs 感觉指令这个地方知识点挺多的,而且很重要,所以,今天添加一点小笔记。

先说使用场景,动态生成DOM元素并绑定事件,非常常见的一种场景,用jq实现效果:

var count=0;
$("#test").on("click",function(event){
 if(event.target.tagName.toLowerCase()=="input") return;
 count++;
 var html="<input type='text' class='newEle' value='"+count+"'/>";
 $(this).html(html);
 $(".newEle").focus();
});
$("body").on("blur",".newEle",function(){
 alert($(this).val());
})

如果用angularjs应该怎么实现呢?想当然的情况是这样的:

var myApp = angular.module('myApp', []);
    myApp.controller('MainCtrl', ['$scope','$compile',function($scope) {
      $scope.count = 0;
      $scope.add = function() {
       if(event.target.tagName.toLowerCase()=="input")return;
        var target=$(event.target);
        $scope.count++;
        target.html("<input value='"+$scope.count+"' ng-blur='showValue()'>" );
      }
      $scope.showValue=function(){
        alert(event.target.value)
      }
    }])

理想很丰满,点击test的时候内容确实变成了input,但是input不能绑定任何ng事件。

var myApp = angular.module('myApp', []);
    myApp.controller('MainCtrl', ['$scope','$compile',function($scope, $compile) {
      $scope.count = 0;
      $scope.add = function() {
       if(event.target.tagName.toLowerCase()=="input")return;
        var target=$(event.target);
        $scope.count++;
        target.html($compile("<input value='"+$scope.count+"' ng-blur='showValue()'>")($scope));
      }
      $scope.showValue=function(){
        alert(event.target.value)
      }
    }])

达到目的~

这里用到了$compile服务,官方的解释是compile可以将一个HTML字符串或者DOM编译成模板,该模板能够与scope链接起来,也就是说直接插入一段html片段到页面中,虽然能插入进去,但是angular并没有编译,所以任何ng事件指令绑定都是无效的,通过compile能够将html片段先编译后再插入。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# angularjs  # 动态绑定  # 绑定事件  # 指令绑定  # Angularjs为ng-click事件传递参数  # angular ng-click防止重复提交实例  # AngularJS基础 ng-click 指令示例代码  # AngularJS的ng-click传参的方法  # 详解angularJS动态生成的页面中ng-click无效解决办法  # AngularJS中directive指令使用之事件绑定与指令交互用法示例  # Angularjs中使用指令绑定点击事件的方法  # AngularJs ng-change事件/指令的用法小结  # Angularjs 事件指令详细整理  # Angular使用操作事件指令ng-click传多个参数示例  # 绑定  # 都是  # 是这样  # 很重要  # 想当然  # 这两天  # 先说  # 大家多多  # 挺多  # 变成了  # 也就是说  # 编译成  # function  # count  # test  # click  # event  # toLowerCase  # input  # target 


相关文章: Android自定义listview布局实现上拉加载下拉刷新功能  国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?  C++ static_cast和dynamic_cast区别_C++静态转换与动态类型安全转换  详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)  如何在阿里云虚拟主机上快速搭建个人网站?  南阳网站制作公司推荐,小学电子版试卷去哪里找资源好?  专业网站制作服务公司,有哪些网站可以免费发布招聘信息?  韩国服务器如何优化跨境访问实现高效连接?  如何在Ubuntu系统下快速搭建WordPress个人网站?  C++用Dijkstra(迪杰斯特拉)算法求最短路径  详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)  建站主机如何选?高性价比方案全解析  ,网页ppt怎么弄成自己的ppt?  攀枝花网站建设,攀枝花营业执照网上怎么年审?  如何获取开源自助建站系统免费下载链接?  怎么用手机制作网站链接,dw怎么把手机适应页面变成网页?  nginx修改上传文件大小限制的方法  网站制作公司排行榜,四大门户网站排名?  网页设计与网站制作内容,怎样注册网站?  如何正确下载安装西数主机建站助手?  建站之星收费标准详解:套餐费用及年费价格表一览  表情包在线制作网站免费,表情包怎么弄?  如何用y主机助手快速搭建网站?  制作网站的过程怎么写,用凡科建站如何制作自己的网站?  如何选择长沙网站建站模板?H5响应式与品牌定制哪个更优?  XML的“混合内容”是什么 怎么用DTD或XSD定义  开封网站制作公司,网络用语开封是什么意思?  建站之星如何助力网站排名飙升?揭秘高效技巧  黑客入侵网站服务器的常见手法有哪些?  宝塔新建站点报错如何解决?  网站微信制作软件,如何制作微信链接?  购物网站制作公司有哪些,哪个购物网站比较好?  公司网站设计制作厂家,怎么创建自己的一个网站?  北京网站制作网页,网站升级改版需要多久?  如何零成本快速生成个人自助网站?  北京网页设计制作网站有哪些,继续教育自动播放怎么设置?  建站之星后台密码遗忘?如何快速找回?  建站之星如何修改网站生成路径?  如何在局域网内绑定自建网站域名?  ui设计制作网站有哪些,手机UI设计网址吗?  如何快速启动建站代理加盟业务?  如何快速搭建响应式可视化网站?  微信h5制作网站有哪些,免费微信H5页面制作工具?  logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?  如何快速搭建支持数据库操作的智能建站平台?  ,怎么用自己头像做动态表情包?  如何快速上传自定义模板至建站之星?  如何在沈阳梯子盘古建站优化SEO排名与功能模块?  Swift开发中switch语句值绑定模式  电脑免费海报制作网站推荐,招聘海报哪个网站多? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。