AngularJS:从指令中检索元素名称

时间:2014-03-21 13:28:48

标签: angularjs

我花了一些时间寻找这个,但我没有找到任何东西。

我有以下

HTML文件

<my-directive name="someName" id="someId" method="somemethod">
    sometext
</my-directive>

我的指示

app.directive('myDirective', function() {
  return {
    restrict: 'EA',
    templateUrl: "example.html",

    transclude: true, 
    link: function(scope, element, attrs)
   {
       alert(element.name);  //Used for testing, Not working
   }
  };
});

我试图访问指令中的元素参数(name,method,id),但我无法弄清楚如何。

提前致谢。

2 个答案:

答案 0 :(得分:0)

使用警报进行测试是非常糟糕的做法。您应该编写一个断言,专门查找所需的属性(在本例中为name)并验证它是否符合您的预期。正如上面的评论者doodeec所说,你将在attrs.name下找到你需要的价值。对元素的引用可能还需要是元素[0],以确保您不会获得未定义或空值。最后,你有你的指令绑定到元素和属性,这似乎是一个不太理想的情况。如果我是你,我会绑定到其中一个,但不是两个。它会在两个地方制作更干净的代码并删除一些意大利面条。

答案 1 :(得分:0)

请查看此Plnkr

您可以在链接功能中使用attrs作为参数。使用它而不是元素。

link: function(scope, element, attrs) {
       scope.result = attrs['name'];
}

您也在使用翻译,但尚未在模板中定义“ng-transclude”属性。