繁体   English   中英

Ng-Show多次通话

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM