我试图找到像这样的指令中包含的子代数:

<div my-directive="true">
  <span ng-repeat="i in [1,2,3,4]>{{i}}</span>
</div>


指示:

angular.module('myModule').directive('myDirective', function() {
  return {
    restrict: 'A',
    transclude: true,
    template: '<canvas></canvas><div class="canvas-overlay"></div>',
    controller: function($element, $transclude) {
      $transclude(function(transcludeEl) {
        $element.find('.canvas-overlay').append(transcludeEl);
      });

      console.log($element.find(".canvas-overlay")[0].children);
   })
 }
});


使用ng-repeat时,控制台日志为我提供了一个空的html集合,但是当我对范围进行硬编码时,控制台日志为我提供了正确的子元素。

上下文:我需要根据孩子的数量来设置画布的高度。

我也尝试将控制器功能更改为后链接功能,但仍然失败。

我究竟做错了什么?

最佳答案

 controller: function($element, $transclude) {
        $transclude(function(transcludeEl) {
           $element.children().eq(1).append(transcludeEl);
 });


我不能.find(".canvas-overlay").children()可以。

https://jsfiddle.net/xtx1nc2k/

关于javascript - 在 Angular Directive(指令)中查找被排除的ng重复子代数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33646403/

10-12 04:06