如何使用AngularJS ngShow指令仅在元素位于数组中时显示
How to use the AngularJS ngShow directive to show only if an element is in an array?
我的目标是快速地创建一个标记,显示与给定出版物相关的所有作者。
当$scope.publications.authors
设置为单个值时,一切都正常。当多个值存储在一个数组中时,它们不起作用,如下所示。
我知道AngularJS ngShow指令的条件语句不是用于数组的合适语句,但我似乎不知道实际应该使用什么。
HTML:
<div ng-repeat="person in persons" ng-show="person.firstName == publication.authors">{{person.firstName}}</div>
JS:
$scope.publications = [
{"title": "Research Paper",
"authors": ["Bill", "George"]};
$scope.persons = [
{"firstName": "Bill",
"lastName": "Smith"},
{"firstName": "George",
"lastName": "Jones"},
{"firstName": "Mike",
"lastName": "Thomas"};
根据publications
的数据结构,您需要一个嵌套中继器。您可以使用电流为person
和publication
的函数来驱动显示器。
<div ng-repeat="publication in publications">{{publication.title}}
<br/>
<div ng-repeat="person in people" ng-show="show(person, publication)">{{person.firstName}}</div>
</div>
function ctrl($scope) {
$scope.publications = [{
"title": "Research Paper",
"authors": ["Bill", "George"]
}];
$scope.people = [{
"firstName": "Bill",
"lastName": "Smith"
}, {
"firstName": "George",
"lastName": "Jones"
}, {
"firstName": "Mike",
"lastName": "Thomas"
}];
$scope.show = function (person, publication) {
return publication.authors.indexOf(person.firstName) >= 0;
}
}
在控制器中生成函数,该函数可以检查元素是否存在于persons
中,并在ng-show
中调用它。检查下面的小提琴:
http://jsfiddle.net/HB7LU/323/
我认为最好的方法是在控制器中使用一个方法,而不是尝试迭代DOM中的所有数据。
使用一种方法有多种方法。如果你只想在一行上显示所有作者的名字,你可以有一个方法来获取作者,并返回一个包含所有名字的字符串,并用这个引用这个方法来获取div的内容
{{getAuthors(publication.authors)}}
您还可以有一个方法,返回一个名称数组,并使用类似的ng repeat对其进行迭代
相关文章:
- json数组显示在<李>使用angular js
- AngularJS错误处理:根据错误数组显示错误
- 在 MVC3 中将字节数组显示为图像
- Highcharts使用数组显示每个气泡点的附加信息
- 如何使用数组显示文本
- 对于数组 {{显示项目}} 中的每个项目
- 将 PHP 数组显示为动画
- 如何将多维数组显示为表格
- MongoDb - 具有空值的有界数组显示无界
- 如何在谷歌地图中使用地址数组显示信息窗口和折线
- 如何从查询中将json数组显示为重复区域
- 根据布尔数组显示或隐藏jQuery元素
- 初学者javascript;for循环,对象数组显示为未定义
- JavaScript数组显示10个图像,然后显示下一个10个
- JS数组显示不正确
- Meteor:如何在html页面上使用光标数组显示列表
- Javascript发布数组显示语法错误
- PHP数组到JavaScript数组显示[object,object]
- 如何使用数组显示循环中的文本
- Javascript数组显示