检查对象数组的长度以获取 ng-if 中的特定值
Check length of an array of objects for a specific value in ng-if
我传递的对象数组如下所示:
"articles": [
{
"_id": "1234",
"type": "location",
"content": {}
},
{
"_id": "1235",
"type": "event",
"content": {}
}, ...
然后我使用 ng-repeat 循环遍历我按事件过滤的数组:
<div ng-if="articles.type == event && articles.length > 0">
<h3>Events</h3>
<ul>
<li ng-repeat="article in articles | filter: { type: 'event'} track by $index">
<h2>{{article.content.title}}</h2>
<p>{{article.content.intro}}</p>
</li>
</ul>
</div>
<div ng-if="articles.type == location && articles.length > 0">
<h3>Hotspots</h3>
<ul>
<li ng-repeat="article in articles | filter: { type: 'location'} track by $index">
<h2>{{article.content.title}}</h2>
<p>{{article.content.intro}}</p>
</li>
</ul>
</div>
我试图实现的行为是,如果没有类型为事件或位置的文章,我就不会显示它们。
我的问题是如何在我的 ng-if 中检查它,因为现在我检查的是整个数组的长度,而不是该类型文章的数组长度。
在范围内创建方法
$scope.isExists=function(type){
var obj = $scope.articles.find(function(x){ return x.type == type ; });
return obj !== null;
}
那就这样试试
在html
<div ng-if="isExists('event')">
和
<div ng-if="isExists('location')" >
也许是这样的:
$scope.article_type = function(type) {
for (i = 0; i < $scope.articles.length; i += 1) {
if ($scope.articles[i].type === type) {
return true;
}
}
return false;
}
然后在你的 HTML:
<div ng-show="article_type('event')">
编辑:Anik 的回答更优化
我传递的对象数组如下所示:
"articles": [
{
"_id": "1234",
"type": "location",
"content": {}
},
{
"_id": "1235",
"type": "event",
"content": {}
}, ...
然后我使用 ng-repeat 循环遍历我按事件过滤的数组:
<div ng-if="articles.type == event && articles.length > 0">
<h3>Events</h3>
<ul>
<li ng-repeat="article in articles | filter: { type: 'event'} track by $index">
<h2>{{article.content.title}}</h2>
<p>{{article.content.intro}}</p>
</li>
</ul>
</div>
<div ng-if="articles.type == location && articles.length > 0">
<h3>Hotspots</h3>
<ul>
<li ng-repeat="article in articles | filter: { type: 'location'} track by $index">
<h2>{{article.content.title}}</h2>
<p>{{article.content.intro}}</p>
</li>
</ul>
</div>
我试图实现的行为是,如果没有类型为事件或位置的文章,我就不会显示它们。
我的问题是如何在我的 ng-if 中检查它,因为现在我检查的是整个数组的长度,而不是该类型文章的数组长度。
在范围内创建方法
$scope.isExists=function(type){
var obj = $scope.articles.find(function(x){ return x.type == type ; });
return obj !== null;
}
那就这样试试
在html
<div ng-if="isExists('event')">
和
<div ng-if="isExists('location')" >
也许是这样的:
$scope.article_type = function(type) {
for (i = 0; i < $scope.articles.length; i += 1) {
if ($scope.articles[i].type === type) {
return true;
}
}
return false;
}
然后在你的 HTML:
<div ng-show="article_type('event')">
编辑:Anik 的回答更优化