AngularJS:如何将元素转换为使用ng-repeat的模板?

 琼慧彦霖顺南 发布于 2023-01-11 15:59

我有一个carousel指令,其中包含一些块,用于将传入的数组映射items到元素结构数组的数组中,然后生成类似于以下伪代码的标记:



  
    
    
  

  
    
    
  


这个角度模板如下所示:


鉴于我的观看代码:



  {{ item.name }}

我希望transcluded元素绑定到item最深的对象ng-repeat

这里有一个完整的Plunker和一个减少的测试用例:http://plnkr.co/edit/kYItcXV0k9KvnpiYx1iG

问题是我不能在其中放置一个ng-transclude属性ng-repeat(如carousel.jsPlunkr中的指令文件所示)我似乎无法使用transclude()compile步骤中的函数手动将要转换的标记注入该位置.指示.

任何想法将不胜感激.

1 个回答
  • 在现有指令的link函数中设置一个引用transclude函数的变量:

     post: function($scope, $element, attrs) {
         $scope.transclude = transclude; 
         ...
    

    然后,创建一个新指令,用于代替ng-transclude您希望转换内容出现在以下内容中的元素:

    .directive('innerTransclude', function(){
      return function(scope, elem, attrs){
        scope.transclude(scope, function(clone){
          elem.append(clone);
        });
      }
    })
    

    该指令只是将克隆附加到元素,同时避免尝试在使用包含本身的元素内部使用转换的问题.不要忘记将其添加到您的模板:

    <div class="carousel__item-content" inner-transclude></div>
    

    演示

    2023-01-11 16:01 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有