AngularJS-仅当集合中的布尔值均不为真时才显示项
我只想在$scope.aspects中没有一个方面是真的情况下在代码中显示该按钮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,并为其提供一个函数,该函数仅在
<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