编程语言
首页 > 编程语言> > javascript-AngularJS仅在ng-repeat中显示最后一个元素

javascript-AngularJS仅在ng-repeat中显示最后一个元素

作者:互联网

使用flexslider渲染一堆画廊时,我有一个奇怪的行为.如下所示,我有一个包含多个对象的数组,这些对象构成了一个图像数组.当我“渲染”画廊时,所有画廊都会出现,但只有最后一个画廊会显示其图像.在所有画廊上,该特定图像数量的指示符以及标题和链接均正确,但是图像丢失.

我在这里做错事了吗?
这是我的代码:

$scope.galleries = [{title: 'gallery1', 'link': 'http://...', elements: 
                        ['img/img1.jpg','img/img2.jpg']},
                    {title: 'gallery2', 'link': 'http://...', elements: 
                        ['img/img3.jpg','img/img4.jpg']}];

我想给每个画廊展示一个指令和ng-repeat.该指令应显示标题,并使用flexslider(https://github.com/thenikso/angular-flexslider)呈现画廊.指示:

.directive('gallery', function() {
      return {
          restrict: 'A',
          templateUrl: 'views/gallery.html',
          scope: {
              gallery: '='
          },
          link: function(scope, element, attrs) {
              // first generate html, the

              // set content here
              scope.link = scope.gallery.link;
              scope.title = scope.gallery.title;
              scope.elements = angular.copy(scope.gallery.elements);
              scope.num = scope.gallery.elements.length;

          }
      };
  }

这里是模板:

<a ng-href="{{link}}" target="_blank" ng-bind="title"></a>
<div class="gallery">
  <div class="flexslider">
    <div class="slides-control">
    <a href="" ng-click="prevSlideshow()" class="prev">
    <
      </a>
      <span class="current_pos">1</span>
      /
      <span ng-bind="num" class="total"></span>
        <a href="" ng-click="nextSlideshow()" class="next">
        >
      </a>
    </div>

        <ul ng-click="nextSlideshow()" class="slides" slideshow="false" control-nav="false" direction-nav="false" flex-slider slide="element in elements">
            <li><img ng-src="{{element}}" alt=""></li>
        </ul>
  </div>
  <a ng-href="{{link}}" target="_blank"><h4>more</h4></a>
<h5>---------------------------------------</h5>
</div>

最后,我怎么称呼它:

<ul class="publications" >
    <li ng-repeat="gallery in galleries">
        <div gallery="gallery"></div>
    </li>
</ul>

解决方法:

好吧,我有一些好消息和一些坏消息…

好消息,您的代码没有做错任何事情

坏消息您的代码没有做错任何事情

说明
您尝试使用FlexSlider的指令具有一些当前编写的限制.您只看到一组呈现的数据的原因是,当与范围相关的任何内容时,slide属性与指令中所有其他逻辑的关联都被写入了compile(请参见flex-slider.js中的第11行)函数.该指令的指令应在链接功能内执行.

选件

>与指令的开发者联系并提交错误报告
>在指令中自行解决问题
>编写自己的组件

Here is a plnkr I created
此plnkr显示了我添加的ng-repeat,以说明您的代码应根据指令的创建方式进行工作.

注意开发人员可能从未遇到过这种情况,因为创建它的意图可能是一次只具有一个实例.

标签:flexslider,angularjs,angularjs-directive,angularjs-scope,javascript
来源: https://codeday.me/bug/20191029/1960328.html