[英]Ng-Show called multiple times
我有一个带有ng-disable指令附加的按钮和一个评估按钮状态的函数。 当视图加载时,我注意到该函数大约被调用了6-8次。 这正常吗? 它不仅在加载时而且与视图有任何交互:
<button type="button" class="listBtn btn btn-xs btn-block btn-danger" ng-click="Site.deleteSite()" ng-show="Site.canDelete()"><i class="fa fa-times fa-fw"></i> Delete Site</button>
然后控制器具有此功能:
canDelete: function () {
console.log(Site.selected);
//CHECK IF SITE SELECTED
if (Site.selected) {
console.log('Site has been selected');
console.log(Site.selected.children.length);
//CHECK IF SELECTED HAS CHILDREN
if (Site.selected.children.length) {
console.log('Site has children');
//SELECTED HAS CHILDREN - DISABLE BUTTON
return true;
} else {
//SELECTED HAS NO CHILDREN - ENABLE BUTTON
console.log('Site has no children');
return false;
}
} else {
//NO SITE SELECTED - DISABLE BUTTON
console.log('No site selected');
return true;
}
}
另外,如果有人对改善此建议或IF陈述有任何建议,那将是有用的。 谢谢。
ng-show
将在每个摘要循环中进行评估-它不知道(在该抽象级别上) ng-show
检查了什么,因此必须在可能改变结果的任何时候重新评估。 您可能想做的是:
$scope.canDelete = checkIfCanDelete();
checkIfCanDelete = function() {
//your check
$scope.canDelete = Site.selected && Site.selected.children.length;
}
$scope.$watch('Site.selected', function() {
checkIfCanDelete();
}
但老实说,如果它不是计算密集型的(并且不是),那么将其保留下来可能更容易,更清晰。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.