当前位置: 首页 > 编程笔记 >

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

艾跃
2023-03-14
本文向大家介绍Angularjs 动态添加指令并绑定事件的方法,包括了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片段先编译后再插入。

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

 类似资料:
  • 本文向大家介绍jQuery给动态添加的元素绑定事件的方法,包括了jQuery给动态添加的元素绑定事件的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了jQuery给动态添加的元素绑定事件的方法。分享给大家供大家参考。具体分析如下: jquery中绑定事件一般使用bind,或者click,但是这只能是对已经加载好的元素定义事件,那些后来添加插入的元素则需要另行绑定。在1.7版本以前使用l

  • 本文向大家介绍Angularjs中使用指令绑定点击事件的方法,包括了Angularjs中使用指令绑定点击事件的方法的使用技巧和注意事项,需要的朋友参考一下 项目中,模板中的菜单是jQuery控制的,在Angularjs中就运行不到了,因为菜单项是ng-repeat之后的。 如html Jquery给第一级a链接绑定事件代码像: 因为我之前看过文档说,Angularjs的Controller不处理D

  • 问题内容: 我正在做的事情非常精简,可以解决问题。 我有一个简单的。每当您单击一个元素时,它都会添加另一个元素。但是,需要先对其进行编译才能正确呈现。 我的研究使我走向了。但是所有示例都使用了一个复杂的结构,我真的不知道如何在这里应用它。 小提琴在这里:http : //jsfiddle.net/paulocoelho/fBjbP/1/ JS在这里: Josh David Miller的解决方案:

  • 问题内容: 我刚开始使用angularJS,并努力为我要做的事情找出合适的架构。我只有一个页面应用程序,但 URL始终应该保持不变 ;我不希望用户能够导航到根以外的任何路由。在我的应用中,有一个主要的div需要承载不同的视图。访问新视图时,我希望它接管主div中的显示。以这种方式加载的视图可以被丢弃或停留在DOM中,就像隐藏在DOM中一样- 我很想知道每个视图如何工作。 我提出了一个我想做的粗略的

  • 本文向大家介绍jquery html动态添加的元素绑定事件详解,包括了jquery html动态添加的元素绑定事件详解的使用技巧和注意事项,需要的朋友参考一下 在实际开发中会遇到要给动态生成的html元素绑定触发事件的情况: 假设我们要给ul动态添加的<li>绑定click事件形成如下结果 以上这篇jquery html动态添加的元素绑定事件详解就是小编分享给大家的全部内容了,希望能给大家一个参考

  • 问题内容: 我正在尝试构建一个指令,该 指令 负责在其声明的元素上 添加更多指令 。例如,我要建立一个指令,需要增加的照顾,和。 如果我尝试添加这些属性然后使用,则显然会生成一个无限循环,因此我正在检查是否已添加所需的属性: 当然,如果我没有该元素,则将设置属性,但不会引导该指令。 这种方法正确还是我做错了?有没有更好的方法来实现相同的行为? UDPATE :鉴于这是实现此目标的唯一方法,是否有一