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

fst*_*str 8 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);
    }
  }
});
Run Code Online (Sandbox Code Playgroud)

我真的想称它为"require-all",但是如果我重命名它就不再适用了.为什么"requireall"工作但不是"require-all"?

小智 15

Angular将camelCase设置为snake-casing,因此需要将requireall指令重命名为requireAll,然后可以require-all在标记中使用(或者data-require-all如果要正确标记自定义标记).起初困惑了我一会儿.

  • 它实际上是[kebab-case,list-case甚至是脊柱病例](http://en.wikipedia.org/wiki/Snake_case).Snake-case会导致`require_all` (5认同)

Ash*_*esh 5

将指令重命名为"requireAll";

.directive("requireAll",…)
Run Code Online (Sandbox Code Playgroud)

并且abcDef可以abc-def在标记中使用命名的指令.