包含名称中的破折号的自定义角度指令不起作用

时间:2014-09-12 11:55:09

标签: angularjs angularjs-directive

我编写了以下Angular指令,它将为所有子节点添加“required”属性:

.directive("requireall", function($compile) {
  return {
    restrict: 'A', //only want it triggered for attributes
    compile: function(element, scope) {
      // Prevent infinite loop on compile
      element.removeAttr("requireall");

      var allChildren = element.find('*');
      allChildren.attr('required', 'required');
      $compile(element)(scope);
    }
  }
});

我真的想称之为“require-all”,但是如果我重命名它,那么它就不再起作用了。为什么“requireall”工作但不是“require-all”?

2 个答案:

答案 0 :(得分:15)

Angular将camelCase设置为snake-casing,因此您的requireall指令需要重命名为requireAll,然后您可以在标记中使用require-all(或data-require-all如果您想要正确使用{{1}}标记自定义标签)。起初困惑了我一段时间。

答案 1 :(得分:5)

将指令重命名为" requireAll&#34 ;;

.directive("requireAll",…)

名为abcDef的指令可以在标记中用作abc-def