在一个返回布尔值的函数调用之后,是否有可能显示/隐藏一个元素?场景是当所有n个项目都具有"已同意"标志时,显示"已准备好"。如果没有,则显示其他内容。"已同意"标志的值会随着单选按钮的改变而改变。
$scope.data = [
{
title: "Agreement #1",
agreed: false,
},
{
title: "Agreement #2",
agreed: false,
},
];
$scope.ready = function()
{
var go = true;
angular.forEach($scope.data, function(item, key) {
go &= item.agreed==true;
});
return go;
}
接着,调用:
<div ng-show="ready()">Go!</div>
<div ng-hide="ready()">Missing the points.</div>
这段代码存在问题:如果所有单选按钮都被选中,也就是说,所有同意标志的值都设置为true,那么ready()不会自动更新。
ng-show =“!ready()”
编码为ng-hide =“ready()”
,而&=
可能更有效率,但它不是那么易读。 如果你使用if (!item.agreed)返回false;
,然后在循环后返回true
,这会怎样呢? 这样更易读,也可能更有效率。 它甚至可能解决你的问题。 如果不行,请你转储$scope.data
并发布一下吗? - Mawg says reinstate Monicago &= item.agreed==true;
,因为我可能会担心运算符优先级。如果你不想按照我的建议重写它,那么至少要加上括号:go &= (item.agreed==true);
或者go &= item.agreed;
,因为你不需要显式地检查true
。 - Mawg says reinstate Monica