Angularjs ng show if filter和internal if语句有效
我创建了一个ng重复,如下所示:Angularjs ng show if filter和internal if语句有效,angularjs,Angularjs,我创建了一个ng重复,如下所示: <div class="items"> <!-- WANT TO HIDE THIS ENTIRE AREA IF THERE IS NO VALID ITEMS --> <b>Items</b> <span ng-repeat="item in items | orderBy:'priority'" itemid="{{item.$id}}" ng-if="!item.groupID || it
<div class="items">
<!-- WANT TO HIDE THIS ENTIRE AREA IF THERE IS NO VALID ITEMS -->
<b>Items</b>
<span ng-repeat="item in items | orderBy:'priority'" itemid="{{item.$id}}" ng-if="!item.groupID || item.groupID == 'misc'">
{{item.title}}
</span>
</div>
项目
{{item.title}
如您所见,我有一个ng if
,它检查项目是否有null
项目.groupid
或是否在misc
类别中
很多时候,没有符合所有这些条件的项目,在这种情况下,我想隐藏外部div
我不知道如何隐藏它,因为我无法在循环的内部元素部分执行ng显示。我认为最干净的方法是预筛选列表,并在父div.items上添加一个条件,而不是在ng重复中的每个跨度中使用ng if 您应该在控制器中过滤列表,只需在父div上添加条件
<div class="items" ng-if="filteredItems.length">
<b>Items</b>
<span ng-repeat="item in filteredItems | orderBy:'priority'" itemid="{{item.$id}}">
{{item.title}}
</span>
</div>
项目
{{item.title}
我认为最干净的方法是预筛选列表,并在父div.items上添加一个条件,而不是在ng repeat中的每个span中使用ng if
您应该在控制器中过滤列表,只需在父div上添加条件
<div class="items" ng-if="filteredItems.length">
<b>Items</b>
<span ng-repeat="item in filteredItems | orderBy:'priority'" itemid="{{item.$id}}">
{{item.title}}
</span>
</div>
项目
{{item.title}
您可以创建一个可以访问外部作用域上公共变量的函数。它看起来是这样的:
在JS文件中
$scope.NoValidItems = true; //assume no valid items code also might look different based on how you format your angular
$scope.CheckItems = function(item){
var check = false;
if(item.groupID && item.groupID !== 'misc'){
check = true;
$scope.NoValidItems = false;
}else
check = false;
return check;
};
HTML
项目
{{item.title}
这应该行得通,if语句可能不准确,但您可以理解其中的大意。如果有一个是有效的,它将显示,但如果没有一个有效的项目不显示。满足您的条件条件条件时有效。希望这会有所帮助,我解释得很好您可以创建一个可以访问外部作用域上的公共变量的函数。它看起来是这样的: 在JS文件中
$scope.NoValidItems = true; //assume no valid items code also might look different based on how you format your angular
$scope.CheckItems = function(item){
var check = false;
if(item.groupID && item.groupID !== 'misc'){
check = true;
$scope.NoValidItems = false;
}else
check = false;
return check;
};
HTML
项目
{{item.title}
这应该行得通,if语句可能不准确,但您可以理解其中的大意。如果有一个是有效的,它将显示,但如果没有一个有效的项目不显示。满足您的条件条件条件时有效。希望这会有所帮助,我已经解释清楚了您可以使用过滤器,并将过滤器的结果分配给变量。使用该变量决定是否应显示封闭的
div
下面展示了它的工作原理:
<div ng-show="filteredItems.length > 0">
Test
<div ng-repeat="item in items | filter:hasGroupFilter(group) as filteredItems">
{{ item.name }} - {{ item.group }}
</div>
</div>
可以使用过滤器,并将过滤器的结果指定给变量。使用该变量决定是否应显示封闭的
div
下面展示了它的工作原理:
<div ng-show="filteredItems.length > 0">
Test
<div ng-repeat="item in items | filter:hasGroupFilter(group) as filteredItems">
{{ item.name }} - {{ item.group }}
</div>
</div>
不幸的是,我不能预先筛选列表,否则这种方式将是完美的!不幸的是,我不能预先筛选列表,否则这种方式将是完美的!我试过这个,$scope.hasGroupFilter函数从来没有发过火,有一个打字错误,效果很好。我试过这个,$scope.hasGroupFilter函数从来没有发过火,有一个打字错误,效果很好。