AngularJS - 检查子数组是否包含某些内容
AngularJS - Check if subarray contains something
我有一个教室列表,每个教室都是要对教室执行的操作的子数组。
{
"id": 1,
"name": "GR302",
"actions": [
{
"date": "19/04/2011",
"deadline": "21/04/2011",
"priority": "high"
},
{
"date": "15/01/2012",
"deadline": "20/12/2014",
"priority": "low"
}
],
}
我用ng-repeat列出了一个列表:room in room,在那里又列出了另一个ng-repeat:action in room.actions。现在,我很想在有高优先级操作的房间名称旁边放置一个标志。但我不知道怎么做,我是AngularJS的初学者。我唯一能想到的就是使用ng-model和ng-class?
<h4>{{room.name}} <span class="glyphicon" ng-class="(something) ? 'glyphicon-flag' : ''"></span></h4>
你可以用很多不同的方式做到这一点,ng-class足够灵活,可以接受一系列表达式,对象,数组和字符串。
你可以做:-
ng-class="{'glyphicon-flag' : action.priority == 'high'}"
或
<!--More flexible version, Here you can add more key value pairs if you need to specify different classes for different priority-->
ng-class="{'high' : 'glyphicon-flag'}[action.priority]"
或
ng-class="{true, 'glyphicon-flag'}[action.priority == 'high']"
甚至用表达式
ng-class="action.priority == 'high' ? 'glyphicon-flag' : ''"
如果你想在上面做一个级别,那么:
在控制器中,在作用域上创建一个函数:
$scope.isFlagged = function(actions){
if(!angular.isArray(actions)) return false;
return actions.some(function(action){
return action.priority === 'high';
});
}
在您看来,只需做:-
ng-class="{true, 'glyphicon-flag'}[isFlagged(room.actions)]"
或者,如果每个房间的操作数量在您的案例中没有动态变化,那么您应该在为房间设置视图模型时在控制器中添加一个属性,这将更有效地提高性能。
例:-
angular.forEach($scope.rooms , function(room) {
room.isFlagged = isFlagged(room.actions); //Add a property on the room object
});
function isFlagged(actions){
if(!angular.isArray(actions)) return false;
return actions.some(function(action){
return action.priority === 'high';
});
}
只需在 ng 类表达式中使用该标志即可。
计算结果可以是表示空格分隔类名的字符串、数组或类名到布尔值的映射。对于映射,值为 true 的属性的名称将作为 css 类添加到元素中。
另请参阅 Array.some 及其用于旧版浏览器的填充程序。
相关文章:
- 当包含另一个asp文件时,是否也包含所有引用的样式和脚本页面
- 此行是否包含函数声明
- 查找对象数组是否包含其中一个标记的最快方法
- 如何使用JQuery检查输入(电子邮件)字段是否包含特殊字符
- 是否在Script Src标记中包含Script<脚本>(JavaScript等)
- 是否可以在JavaScript中包含HTML代码
- 检查数组是否包含
- jQuery事件命名空间是否可以包含破折号
- 在添加或删除之前,正在使用检查classList是否包含类
- 确定数组是否包含偶数
- 如何检查 iframe 中的锚标记是否包含 URL
- 检查选择器在jQuery中是否包含文本(即不是媒体)
- 我是否应该在网站的每个页面上都包含 Google 地图脚本标签
- 如何检查数据表是否有任何包含字符串的行并获取它的行索引
- 在 html 文件中包含无缓存元标记是否也会阻止缓存该 html 文件中链接的 js 和 css 文件
- 如何选择不包含某个子元素的元素
- 这些JavaScript包含定义是否有区别
- 在ParseInstallation对象中包含用户名是否不合适?
- 检查字符串是否包含某段文本
- 匹配一个没有't包含某个子字符串