items = {'apple', 'banana', 'lemon', 'cat', 'dog', 'monkey', 'tom', 'john', 'baby'}
HTML
<div class="variable" ng-repeat="item in items">{{item}} </div>
我想做的是:
当项目为fruit
时,变量为apple, banana, lemon
。
animal
时,变量为cat, dog, monkey
。
human
时,变量为tom, john, baby
水果,动物,人类是css类
请帮忙,谢谢
答案 0 :(得分:1)
控制器
$scope.fruit = ['apple', 'banana', 'lemon'];
$scope.animal = ['cat', 'dog', 'monkey'];
$scope.human = ['tom', 'john', 'baby'];
$scope.items = $scope.fruit.concat($scope.animal).concat($scope.human);
$scope.is = function(type, item) {
return ($scope[type].indexOf(item) != -1);
}
模板
<div ng-class="{fruit: is('fruit',item), animal: is('animal',item), human: is('human',item)}" ng-repeat="item in items">{{item}} </div>
答案 1 :(得分:1)
替换不正确的数组格式的项目
items = {'apple', 'banana', 'lemon', 'cat', 'dog', 'monkey', 'tom', 'john', 'baby'}
到
items = ['apple', 'banana', 'lemon', 'cat', 'dog', 'monkey', 'tom', 'john', 'baby']
ng-class
是一种很好的方法。标记:
<div ng-repeat="item it items" ng-class="defineClass(item)">{{item}}</div>
控制器:
$scope.items = ['apple', 'banana', 'lemon', 'cat', 'dog', 'monkey', 'tom', 'john', 'baby'];
$scope.defineClass = function(item) {
switch (item) {
case 'apple':
case 'banana':
case 'lemon':
return 'fruit';
break;
case 'cat':
case 'dog':
case 'monkey':
return 'animal';
break;
case 'tom':
case 'john':
case 'baby':
return 'human';
break;
}
}
答案 2 :(得分:1)
最具扩展性的方法是使用不同的数据结构。例如:
var items = [
{name: 'apple', type: 'fruit'},
{name: 'bannana', type: 'fruit'},
{name: 'lemon', type: 'fruit'},
{name: 'cat', type: 'animal'},
{name: 'dog', type: 'animal'},
{name: 'monkey', type: 'animal'},
{name: 'tom', type: 'human'},
{name: 'john', type: 'human'},
{name: 'baby', type: 'human'}
];
是的,它更加冗长,但它带来了便利。如果明天您添加新项目,则根本不需要触摸模板或更改控制器代码以支持它。它将自动获得正确的类名。
<div class="{{item.type}}" ng-repeat="item in items">{{item.name}}</div>
答案 3 :(得分:0)
使用ng-class。
<div ng-class="{'classname':variable}" ng-repeat="item in items">{{item}} </div>
例如
<div ng-class="{'human':item == 'tom'}" ng-repeat="item in items">{{item}} </div>