当前位置: 首页 > 面试题库 >

Angular指令如何向元素添加属性?

柯永福
2023-03-14
问题内容

我想知道如何使用此代码段:

//html
<div ng-app="app">
    <div ng-controller="AppCtrl">
        <a my-dir ng-repeat="user in users">{{user.name}}</a>
    </div>
</div>

//js
var app = angular.module('app', []);
app.controller("AppCtrl", function ($scope) {
    $scope.users = [{name:'John',id:1},{name:'anonymous'}];
    $scope.fxn = function() {
        alert('It works');
    };

})  
app.directive("myDir", function ($compile) {
    return {
        link:function(scope,el){
            el.attr('ng-click','fxn()');
            //$compile(el)(scope); with this the script go mad 
        }
     };
});

我知道这是关于编译阶段的,但是我不明白这一点,所以简短的解释将是非常感谢。


问题答案:

将另一个指令添加到同一元素的指令:

类似答案:

这是一个小矮人:http
://plnkr.co/edit/ziU8d826WF6SwQllHHQq?p=preview

app.directive("myDir", function($compile) {
  return {
    priority:1001, // compiles first
    terminal:true, // prevent lower priority directives to compile after it
    compile: function(el) {
      el.removeAttr('my-dir'); // necessary to avoid infinite compile loop
      el.attr('ng-click', 'fxn()');
      var fn = $compile(el);
      return function(scope){
        fn(scope);
      };
    }
  };
});

更清洁的解决方案-完全不使用ngClick

矮人:http
://plnkr.co/edit/jY10enUVm31BwvLkDIAO?p=preview

app.directive("myDir", function($parse) {
  return {
    compile: function(tElm,tAttrs){
      var exp = $parse('fxn()');
      return function (scope,elm){
        elm.bind('click',function(){
          exp(scope);
        });  
      };
    }
  };
});


 类似资料:
  • 问题内容: 是否有任何方法可以使用jQuery方法添加作为Angular指令的元素,并让Angular进行其编译/链接以使其正常工作,就像您首先将指令包括在内一样? 例: 目前,它只是附加了一个空的DOM元素,称为“ my-angular-directive”,但Angular不会发挥作用并发挥作用。 问题答案: 正确的方法是使用:$ compile, 并在指令返回的情况下:(这是推荐的方法)然后

  • 问题内容: 我知道如何在“ jQuery”中单击按钮来添加类 我想通过angular js实现相同的功能。我有一个控制器-myController1。有人可以帮助我做到这一点吗? 问题答案: AngularJS有一些称为JQlite的方法,因此我们可以使用它。见链接 选择DOM中的元素是 像添加类 所以最后

  • 问题内容: 我有办法 在内部,我想调用另一个方法并将其传递,但是我想向其他对象添加新元素(描述)。 如何在Java中做到这一点?代码是什么样的? 问题答案: 只是一个数组。因此: 您可能需要弄混的通用类型。 您可以更快但更冗长:

  • 问题内容: 我正在尝试找到一种使用JavaScript添加/更新属性的方法。我知道我可以使用功能来做到这一点,但在IE中不起作用。 问题答案: 您可以在此处阅读有关许多不同浏览器(包括IE)中属性的行为的信息。 即使在IE中也应该做到这一点。你试过了吗?如果它不起作用,则可能 会起作用。

  • 问题内容: 我试图在我的Angular项目中将keyup事件附加到指令。这是指令: 这是模板中的html: 我想在链接函数中访问并将keyup事件附加到它。我知道我可以用jQuery来获得它,但是那不是Angular的方法。从dom中获取该元素的正确方法是什么? 问题答案: 您可以使用Angular’ ‘ 方法轻松完成此操作: 实时示例:http://jsfiddle.net/cherniv/S7

  • 我需要填充一个json文件,现在我有如下内容: 我需要添加另一个“元素”。我的第一步是使用,现在我需要添加新元素。我想我必须使用添加另一个元素,我尝试了以下方法: 但是当我尝试做时,我得到了错误"对象没有方法推送",我认为我做了一些非常错误的事情,因为我没有告诉任何地方的"元素"。 我该怎么做? 编辑:对不起,我脑子里有很多困惑。 我认为从,但我首先得到了我在JSON中输入的内容。 用数组代替对象