AngularJS-仅当集合中的布尔值均不为真时才显示项

AngularJS-仅当集合中的布尔值均不为真时才显示项,angularjs,Angularjs,我只想在$scope.aspects中没有一个方面是真的情况下在代码中显示该按钮 <aspect-form ng-repeat="aspect in aspects | filter:{active: true}"> </aspect-form> <a class="btn btn-primary btn-lg" role="button">Save</a> 拯救 如何执行此操作?您可以在a元素中使用ng if,并为其提供一个函数,该函数仅在

我只想在$scope.aspects中没有一个方面是真的情况下在代码中显示该按钮

<aspect-form ng-repeat="aspect in aspects | filter:{active: true}">
</aspect-form>
<a class="btn btn-primary btn-lg" role="button">Save</a>

拯救

如何执行此操作?

您可以在
a
元素中使用
ng if
,并为其提供一个函数,该函数仅在
$scope.aspects
中的所有方面都为false时计算为true

<a class="btn btn-primary btn-lg" ng-if="allAspectsAreFalse()">Save</a>
保存

您可以在
a
元素中使用
ng if
,并为其提供一个函数,该函数仅在
$scope.aspects
中的所有方面都为false时计算为true

<a class="btn btn-primary btn-lg" ng-if="allAspectsAreFalse()">Save</a>
保存

我也找到了解决办法。我的是使用ng show,但实际上是一样的。我将展示整个解决方案

<a class="btn btn-primary btn-lg" role="button" ng-show="someAspectShowing()">Save</a>
保存
在控制器中,我定义了以下功能:

$scope.someAspectShowing = function() {
  for(index=0; index < $scope.aspects.length; ++index) {
    if($scope.aspects[index].active === true) {
      return true;
    }
  }
  return false;
  };
$scope.someAspectShowing=function(){
对于(索引=0;索引<$scope.aspects.length;++index){
if($scope.aspects[index].active==true){
返回true;
}
}
返回false;
};

我也找到了解决办法。我的是使用ng show,但实际上是一样的。我将展示整个解决方案

<a class="btn btn-primary btn-lg" role="button" ng-show="someAspectShowing()">Save</a>
保存
在控制器中,我定义了以下功能:

$scope.someAspectShowing = function() {
  for(index=0; index < $scope.aspects.length; ++index) {
    if($scope.aspects[index].active === true) {
      return true;
    }
  }
  return false;
  };
$scope.someAspectShowing=function(){
对于(索引=0;索引<$scope.aspects.length;++index){
if($scope.aspects[index].active==true){
返回true;
}
}
返回false;
};

您可以在不绑定作用域上的函数的情况下执行此操作,如下所示:

<a class="btn btn-primary btn-lg" 
  ng-if="(aspects | filter:{active: true}).length === 0">Save</a>
保存

您可以在不绑定作用域上的函数的情况下执行此操作,如下所示:

<a class="btn btn-primary btn-lg" 
  ng-if="(aspects | filter:{active: true}).length === 0">Save</a>
保存

在这种情况下,我喜欢使用数组。every()和array。一些()函数:

<a class="btn btn-primary btn-lg" role="button" ng-if="allAspectsFalse()">Save</a>

$scope.allAspectsFalse = function() {
  return $scope.aspects.every(function(aspect) {
    return !aspect.active;
  });
}
保存
$scope.allAspectsFalse=函数(){
返回$scope.aspects.every(函数(方面){
return!aspect.active;
});
}

在这种情况下,我喜欢使用数组。every()和array。一些()函数:

<a class="btn btn-primary btn-lg" role="button" ng-if="allAspectsFalse()">Save</a>

$scope.allAspectsFalse = function() {
  return $scope.aspects.every(function(aspect) {
    return !aspect.active;
  });
}
保存
$scope.allAspectsFalse=函数(){
返回$scope.aspects.every(函数(方面){
return!aspect.active;
});
}

很酷。请记住,
ng if
会从DOM树中完全删除元素
ng show
/
ng hide
使用
display:none通过CSS显示/隐藏元素酷。请记住,
ng if
会从DOM树中完全删除元素
ng show
/
ng hide
使用
display:none通过CSS显示/隐藏元素。漂亮漂亮!我想这是最简单的解决方案,但可能不是最具可读性的。我不知道我是否完全同意它可读性较差,因为你必须去控制器查看函数的内部。但这是风格/偏好的问题。但这里有一个实际的区别。。。绑定到函数会导致函数中的代码在应用程序循环中重复求值,然而,我认为如果你绑定到可以在范围上进行评估的特定成员,将有更好的更改跟踪优化。我将继续自我提升,并提醒你,如果你认为这是最好的答案,请将其标记为已接受:)很好,很漂亮!我想这是最简单的解决方案,但可能不是最具可读性的。我不知道我是否完全同意它可读性较差,因为你必须去控制器查看函数的内部。但这是风格/偏好的问题。但这里有一个实际的区别。。。绑定到函数会导致函数中的代码在应用程序循环中重复求值,然而,我认为,如果您绑定到可以在范围上进行评估的特定成员,将有更好的更改跟踪优化。我将继续自我推广,并提醒您,如果您认为这是最好的答案,请将其标记为已接受:)IE8不支持?如果您仍然使用IE8,那么您最不担心的是:PNot在IE8中不支持IE8?如果你仍然使用IE8,那你就不必担心了:P