Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs ng show if filter和internal if语句有效_Angularjs - Fatal编程技术网

Angularjs ng show if filter和internal if语句有效

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

我创建了一个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 || 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函数从来没有发过火,有一个打字错误,效果很好。