我有这个简单的控制器标记

<div ng-controller="TestCtrl" ng-show="isVisible()">
    <input type="text" ng-model="smth"/><br>
    <span>{{smth}}</span>
</div>

和控制器本身
function TestCtrl($scope, $log)
{
    $scope.smth = 'smth';

    $scope.isVisible = function(){
        $log.log('isVisible is running');

        return true;
    }
}

为什么每次更改模型后(例如在文本框中更改一个字母),我都可以在控制台中看到isVisible is running?在这种情况下这不是问题,但我认为它将在大型应用程序中使用。我可以避免吗?

最佳答案

这是正常的,因为这是AngularJS进行“魔术”的必不可少的步骤。该答案有更多详细信息:https://stackoverflow.com/a/9693933/1418796

有多种技术可以确保您不会遇到性能问题,但不能,通常,您不能排除那些表达式的计算。

10-07 13:13