一尘不染

AngularJS中的每个模型更改后,是否都会在ng-show中触发表达式?

angularjs

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

<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在控制台中看到?在这种情况下这不是问题,但我认为它将在大型应用程序中使用。我可以避免吗?


阅读 193

收藏
2020-07-04

共1个答案

一尘不染

这是正常的,因为这是AngularJS如何完成其​​“魔术”的必不可少的步骤。

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

2020-07-04