Javascript 编写角度指令时,应将公共代码放在何处?

Javascript 编写角度指令时,应将公共代码放在何处?,javascript,angularjs,angularjs-directive,Javascript,Angularjs,Angularjs Directive,我所处的情况是,我希望有许多不同的指令 标记名称,但其行为几乎相同。我的第一个想法 只是将指令捕获为如下函数: function standardDirective(template,extract) { return function() { return { restrict: 'E', ... } } } 然后使用此函数“清除”所需的指令 angular.module('MCQ', []) .directive('mcq'

我所处的情况是,我希望有许多不同的指令 标记名称,但其行为几乎相同。我的第一个想法 只是将指令捕获为如下函数:

function standardDirective(template,extract) {
  return function() {
    return {
      restrict: 'E',
      ... }
     }
  }
然后使用此函数“清除”所需的指令

angular.module('MCQ', [])
  .directive('mcq' 
            , standardDirective("MCQTemplate.html"
                               , function(scope){return scope.userSelection;}
                               )
            );
在写了这篇文章之后,我很确定有一些共同点,可能更好 成语,用来做这件事。例如,在我的“解决方案”中,我可能无法在需要时将角度载荷设置为
standardDirective


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

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

这从本质上确保您的指令“继承”另一个指令,如基类

您的“base”指令可以包含您所有的公共逻辑,然后是另一个指令,该指令是
所要求的
,它有它自己的自旋,不管它需要做什么

您可以阅读有关它的更多信息-请参阅创建通信指令一节