【发布时间】:2014-11-30 21:43:01
【问题描述】:
我正在连接到 Web 服务,并希望为每张幻灯片填充 4 个项目的 UI Bootstrap 轮播。我正在使用 | limitTo:4,但我需要一种方法来限制每张幻灯片中的 10 张幻灯片中的 4 张。
这里是 HTML
<div class="row event-slider" ng-controller="eventsController">
<div ng-controller="sliderController">
<carousel interval="interval" class="col-sm-12">
<slide class="col-sm-12">
<div class="col-sm-3 event" ng-repeat="event in eventData | limitTo:4">
<div class="event-inner">
<img ng-src="{{event.image.block250.url}}">
<div class="event-details">
<h4 class="uppercase">{{event.title}}</h4>
<!-- {{event.}} -->
</div>
</div>
</div>
</slide>
</carousel>
</div>
</div>
控制器供参考
app.controller("eventsController", function($scope, $http) {
var events = $http.get('/events');
events.success(function(data) {
$scope.eventData = data.events["event"];
console.log($scope.eventData);
});
});
使用 ng-repeat 过滤器可能缺少一个简单的解决方案。非常感谢您的帮助。
更新:我不考虑响应,但稍后需要(敏捷冲刺)。仍然围绕循环中的 += 进行思考,但它运行良好。我想我是从第 4 项开始,然后从那里开始……再次感谢您的帮助。
var events = $http.get('/events');
var i;
events.success(function(data) {
$scope.eventData = data.events["event"];
$scope.slideGroup = [];
for (i = 0; i < $scope.eventData.length; i += 4) {
slides = {
'first' : $scope.eventData[i],
'second' : $scope.eventData[i + 1],
'third' : $scope.eventData[i + 2],
'fourth' : $scope.eventData[i + 3]
};
console.log($scope.slideGroup);
$scope.slideGroup.push(slides);
}
});
HTML:
<carousel interval="interval" class="col-sm-12">
<slide class="col-sm-12" ng-repeat="event in slideGroup">
<div class="col-sm-3 event">
<div class="event-inner">
<img ng-src="{{event.first.image.url}}">
<div class="event-details">
<h4 class="uppercase">{{event.first.title}}</h4>
</div>
</div>
</div>
<div class="col-sm-3 event">
<div class="event-inner">
<img ng-src="{{event.second.image.url}}">
<div class="event-details">
<h4 class="uppercase">{{event.second.title}}</h4>
</div>
</div>
</div>
<div class="col-sm-3 event">
<div class="event-inner">
<img ng-src="{{event.third.image.url}}">
<div class="event-details">
<h4 class="uppercase">{{event.third.title}}</h4>
</div>
</div>
</div>
<div class="col-sm-3 event">
<div class="event-inner">
<img ng-src="{{event.fourth.image.url}}">
<div class="event-details">
<h4 class="uppercase">{{event.fourth.title}}</h4>
</div>
</div>
</div>
</slide>
</carousel>
【问题讨论】:
-
“我正在使用 | limitTo:4,但我需要一种方法来限制每张幻灯片中的 10 张幻灯片中的 4 张。”你的意思是第一次需要1-4,第二次需要5-8等等?
-
@cpk 您可能想要利用
ngRepeat的$index值,它可以帮助您确定您在给定时刻的位置。这可能会为您指明正确的方向,因为您可以与该值进行比较,并根据您的 HTML 标记的值格式进行相应的比较。 -
@Blackunknown,没错。感谢您的快速回复。
-
@developer10 好的。会调查的。谢谢。
-
@cpk 这里是某人使用 ng-show 做你想做的事的例子,尽管它不是最佳的。 stackoverflow.com/a/20858450/746817下面这个答案更精彩:stackoverflow.com/a/20858583/746817
标签: javascript angularjs twitter-bootstrap angularjs-ng-repeat angular-ui