ng重复为每一行设置一个随机颜色
ng-repeat set a random color for each row
我试图从ng重复中每个元素的数组中设置一个随机背景色。这是我做的一把简单的小提琴:
http://jsfiddle.net/akbb6car/2/
正如你所看到的,我的问题是我不能在每个"行"中设置颜色,但它在所有行中都设置相同。我不明白该怎么解决。我也尝试过使用id="$index"
,但不起作用。这里有一些代码:
<div ng-app="myApp" ng-controller="dummy">
<div ng-repeat="customer in customerData" class="col-sm-3">
<div ng-init="getRandomColor()" class="contact-box" ng-style="{background: bgColor}"> {{customer.name}} got: {{customer.color}}</div>
</div>
</div>
angular.module('myApp', ['ngSanitize'])
.controller('dummy', ['$scope', function ($scope) {
$scope.doc_classes_colors = [
"#339E42",
"#039BE5",
"#EF6C00",
"#A1887F",
"#607D8B",
"#039BE5",
"#009688",
"#536DFE",
"#AB47BC",
"#E53935",
"#3F51B5"
];
$scope.bgColor = "#339E42";
$scope.getRandomColor = function () {
$scope.bgColor = $scope.doc_classes_colors[Math.floor(Math.random() * $scope.doc_classes_colors.length)];
};
$scope.customerData = [{
name: "Mike"
}, {
name: "Tom"
}, {
name: "ASD"
}, {
name: "Lol"
}];
}]);
您的颜色列表已经在范围内,为什么不根据$index从中选择一种新颜色呢?
<div class="contact-box" ng-style="{background: doc_classes_colors[$index % doc_classes_colors.length]}">
http://jsfiddle.net/akbb6car/6/
我使用了$index % doc_classes_colors.length
而不是仅使用$index
,这样,如果行数多于颜色,则颜色会重复。
如果您愿意引入对lodash的依赖,有一种方便的_.shuffle
方法可以随机化列表的顺序,这将使颜色的顺序在页面加载时随机。颜色会以相同的顺序重复,但每次加载页面都会以不同的顺序排列颜色列表。
http://jsfiddle.net/akbb6car/8/
如果你不想引进lodash,我可能会看看他们的来源,看看他们是怎么做的,我不确定。
相关文章:
- 使用谷歌图表在条形图中设置颜色
- 如何在javascript中设置颜色转换
- 如何设置颜色'清除'转换为RGB或HEX
- 引导颜色选择器,如何在下拉列表中设置颜色值框
- 引导 NAV 方式在移动设备中折叠或展开时设置颜色样式
- 根据特定列中的值为 FlexiGrid 行设置颜色
- jQuery调用来设置颜色
- 在更改角度数组时设置
颜色 - 像老板一样根据数据在 D3 中设置颜色
- JS设置颜色选择器值
- jPicker设置颜色
- 在JavaScript中动态设置颜色
- 初始化后如何在光谱调色板中设置颜色
- 在paper.js中设置颜色动画
- 当单击特定按钮时,在数据库中设置颜色
- Javascript如何传递变量和设置颜色
- 巧妙地设置颜色
- 我如何在谷歌图表设置颜色范围
- D3 if/else设置颜色
- 平行坐标:根据尺寸值设置颜色