Angularjs 添加下级指令?

Angularjs 添加下级指令?,angularjs,angularjs-directive,Angularjs,Angularjs Directive,因此,我希望能够编写这样一个元素: <div my-directive></div> 目前,我正在编译时添加这些指令,但它们不会重新运行。对于从指令模板生成的子元素,我可以做任何我想做的事情,因为我很可能在指令运行之前添加到子模板中 例如: 问题在于,在处理我的指令时,收集指令阶段已经过去,修改元素不会触发新的编译 添加所有其他指令后,需要再次手动触发编译阶段,请参阅 问题是,在处理my指令时,collect指令阶段已经过去,修改元素不会触发新的编译 添加所有其他指令后

因此,我希望能够编写这样一个元素:

<div my-directive></div>
目前,我正在编译时添加这些指令,但它们不会重新运行。对于从指令模板生成的子元素,我可以做任何我想做的事情,因为我很可能在指令运行之前添加到子模板中

例如:

问题在于,在处理我的指令时,收集指令阶段已经过去,修改元素不会触发新的编译

添加所有其他指令后,需要再次手动触发编译阶段,请参阅


问题是,在处理my指令时,collect指令阶段已经过去,修改元素不会触发新的编译

添加所有其他指令后,需要再次手动触发编译阶段,请参阅


如果您能提供一个plunker,它可能会更容易帮助“它们不会在父元素上重新运行”--我不会在这里跟随您。你能再解释一下吗?我在这里会有点迂腐。这不是一个“从属指令”。这将是一个“兄弟指令”。我看不出您希望从另一个指令插入同级指令的原因。我确信,在几乎所有的情况下,如果你试图从另一个指令中插入一个指令(然后编译它),你可以在模板中执行,或者根本不需要执行(也就是说,你可以将其重构得更好)。我会在一秒钟内将其删除@ganaraj,我让其他人用一种简单的语言编写模板。我想在执行其他指令时自动应用其他指令。。。例如,如果他们执行
queue
,则会自动获取
trim whitespace
和其他相关指令@ganaraj,我明白你的意思,但我不想解释我的模板编写css/HTMLN00BS时的管道问题。:)如果您能提供一个plunker,它可能会更容易帮助“它们不会在父元素上重新运行”--我不会在这里跟随您。你能再解释一下吗?我在这里会有点迂腐。这不是一个“从属指令”。这将是一个“兄弟指令”。我看不出您希望从另一个指令插入同级指令的原因。我确信,在几乎所有的情况下,如果你试图从另一个指令中插入一个指令(然后编译它),你可以在模板中执行,或者根本不需要执行(也就是说,你可以将其重构得更好)。我会在一秒钟内将其删除@ganaraj,我让其他人用一种简单的语言编写模板。我想在执行其他指令时自动应用其他指令。。。例如,如果他们执行
queue
,则会自动获取
trim whitespace
和其他相关指令@ganaraj,我明白你的意思,但我不想解释我的模板编写css/HTMLN00BS时的管道问题。:)
<div my-directive subordinate-directive></div>
app.directive("queue", [ '$compile', function($compile) {
  var directiveDefinitionObject;
    directiveDefinitionObject = {
      scope: {},
      controller: [
        '$scope', function($scope) {
          $scope.entries = [{name: 1}, {name: 2}, {name: 3}];
        }
      ],
      template: $("#entry").html(),
      compile : function(tElement, tAttrs, transclude) {
        var compiler;

        //All children related directives go here since the template hasn't been
        //appended yet in the post link function when we re-compile
        tElement.children().attr('ng-repeat', 'entry in entries');

        compiler = {
          pre : function(scope, iElement, iAttrs, controller) {
          },
          post : function(scope, iElement, iAttrs, controller) {
            if (iElement.attr('can-do-thing-i-define') === undefined) {
              var c = tElement.clone();

              c.attr('can-do-thing-i-define', '');

              $compile(c)(scope);

              iElement.replaceWith(c);
            }
          }
        };
        return compiler;
      }
    };
    return directiveDefinitionObject;
}]);