将angular与嵌套ng重复使用:
Using angular with nested ng-repeat:
我有一个ng repeat,我想把它添加到数组(相册数组)上,这很好。我有一个颜色数组,它将为相册数组的卡片元素添加不同的背景颜色。结果是不正确的,我试着让颜色数组成为同一数组上的一个对象,但仍然得到了错误的结果。感谢您的帮助。这是CodePen。颜色数组应该循环返回,以等于相册数组中任意数量的相册。
function MainController(albumSerivce, $filter) {
'use strict';
var ctrl = this;
ctrl.albums = [];
ctrl.arrayColor = ['red', 'blue', 'green', 'yellow'];
}
.green {
background-color: rgb(75, 175, 79);
padding: 10px;
}
.red {
background-color: rgb(255, 86, 34);
padding: 10px;
}
.blue {
background-color: rgb(61, 121, 182);
padding: 10px;
}
.yellow {
background-color: rgb(255, 255, 0);
padding: 10px;
}
<body ng-app="app">
<div class="container-fluid" ng-controller="MainController as ctrl">
<div class="albums-container" ng-repeat="album in ctrl.albums" ng-cloak>
<div class="album {{color}}" ng-repeat="color in ctrl.arrayColor">
<img class="image" ng-src="{{album.url}}" alt="" />
<div class="title">{{album.title}}</div>
</div>
</div>
</div>
</body>
更新,我也尝试过这样做。不能完全弄清楚。
<!-- Also tried doing different template with class included and using ng-if with modulus if this mightbe the better route? -->
<div ng-class="album green" ng-if="$index%">
<img class="image" ng-src="{{album.url}}" alt="" />
<div class="title">{{album.title}}</div>
</div>
<div ng-class="album red" ng-if="$index%">
<img class="image" ng-src="{{album.url}}" alt="" />
<div class="title">{{album.title}}</div>
</div>
<div ng-class="album blue" ng-if="$index%">
<img class="image" ng-src="{{album.url}}" alt="" />
<div class="title">{{album.title}}</div>
</div>
<div ng-class="album yellow" ng-if="$index%">
<img class="image" ng-src="{{album.url}}" alt="" />
<div class="title">{{album.title}}</div>
</div>
如果您不是真的想遍历颜色数组,您可以通过一个表达式来分配类。让我知道这个CodePen是否适合你。
<div class="album {{ctrl.arrayColor[$index%ctrl.arrayColor.length]}}" >
<img class="image" ng-src="{{album.url}}" alt="" />
<div class="title">{{album.title}}</div>
</div>
不要试图用ng-repeat
在colorArray
上循环,只需将ngClass与一个将产生一个颜色类的表达式一起使用即可。要使其循环使用,可以使用表达式albumIndex%colorArrayLength
(索引余数数组长度)来获得正确的索引。
ng-class="colorArray[$index%colorArray.length]"
作为自动填充的可变角度的$index
将填充ng个重复的当前索引(在这种情况下是相册阵列的索引)。
angular.module("app",[]).controller("ctrl",function($scope){
$scope.colorArray = ['green','red','blue','yellow'];
$scope.albums =[{
title:"Kitten 1",
url:"https://placekitten.com/g/100/100"
},
{
title:"Kitten 2",
url:"https://placekitten.com/g/100/100"
},
{
title:"Kitten 3",
url:"https://placekitten.com/g/100/100"
},
{
title:"Kitten 4",
url:"https://placekitten.com/g/100/100"
},
{
title:"Kitten 5",
url:"https://placekitten.com/g/100/100"
},
{
title:"Kitten 6",
url:"https://placekitten.com/g/100/100"
}];
});
#container{ display:flex; }
.album { flex: 1 1 0; }
.album img { max-width: 100%; }
.green {
background-color: rgb(75, 175, 79);
padding: 10px;
}
.red {
background-color: rgb(255, 86, 34);
padding: 10px;
}
.blue {
background-color: rgb(61, 121, 182);
padding: 10px;
}
.yellow {
background-color: rgb(255, 255, 0);
padding: 10px;
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div id="container" ng-app="app" ng-controller="ctrl">
<div class="album" ng-class="colorArray[$index%colorArray.length]" ng-repeat="album in albums">
<img class="image" ng-src="{{album.url}}" alt="" />
<div class="title">{{album.title}}</div>
</div>
</div>
相关文章:
- Angular ng类需要帮助设置
- Angular ng repeat order将多个字段作为一个字段
- 通过jQuery添加ng样式属性,angular不更新
- Angular,表达式{{}}的结果没有插入到ng-click中
- angular.js:13424错误:[ng:areq]参数'fn'不是函数,getObject
- Angular js+ng repeat+字母数字索引不起作用
- 将输入值设置为ng模型属性[Angular]时出现问题
- 如何避免在angular上多次调用方法;s ng重复
- Angular ng控制器与ng应用程序冲突
- Angular在与ng重复作斗争
- 初始化ng模型时,Angular ui选择占位符不起作用
- 他们是如何使用angular/jqLite find()方法按属性名称和值选择元素的?ng conf 2015
- Angular:如何使用ng选项进行四个单独的选择
- 如何在Angular Material中的md背景后面接收ng点击事件
- Angular.js通过对象关键点上的ng选项进行跟踪
- 在Angular JS中,预先填充ng中的下拉值repeat
- Angular js-ng选项不起作用
- ng Angular.js中的Repeat不根据json中的items索引进行迭代
- 只有当复选框禁用ng (angular)时才显示工具提示
- 动态创建带有ng-angular did 't trigger onClick事件的元素