在编写角度指令时,我应该在哪里放置公共代码?

时间:2014-08-06 13:53:38

标签: javascript angularjs angularjs-directive

我希望有很多不同的指令 标签名称,但它们的行为几乎相同。我的第一个想法 只是捕获指令作为这样的函数:

function standardDirective(template,extract) {
  return function() {
    return {
      restrict: 'E',
      ... }
     }
  }

然后使用此功能来消除'必要的指令。

angular.module('MCQ', [])
  .directive('mcq' 
            , standardDirective("MCQTemplate.html"
                               , function(scope){return scope.userSelection;}
                               )
            );

写完这篇文章之后,我很确定有一些共同的,可能更好的 成语,这样做。例如,在我的解决方案中#39;我可能无法在需要时对standardDirective进行角度加载。

(我知道我可以制作一个指令并使用属性来区分行为,但是现在,让我们假设我真的需要不同的指令..)

1 个答案:

答案 0 :(得分:1)

您可以在指令上使用require选项。

这基本上确保您的指令"继承"另一个指令,如基类。

您的基地'指令可以包含你所有的常用逻辑,然后是requiring的其他指令,它可以根据需要自行调整。

您可以阅读有关它的更多信息in the Angular Docs - 请参阅“创建传达指令”部分