AngularJs 当模型值发生变化而没有监视函数时触发函数

AngularJs function triggering when a model value change with out a watch function

AngularJs 函数在不使用监视函数的情况下更改模型值时触发。请参考下面的代码。 当模型值 $scope.ActiveTab 发生变化时,函数 $scope.showTab 被触发。但是我没有调用函数 $scope.showTab 也没有为模型编写任何监视函数。

<script>
    var app = angular.module("MyApp", []);

    app.controller("MyController1", function ($scope, $rootScope) {
        $scope.ActiveTab = 'scheme';

        $scope.showTab = function (tab) {
            var r = $scope.ActiveTab == tab;
            return r;
        }

        $scope.moveNext = function () {
            $scope.ActiveTab = 'earning';
        };

        $scope.moveBack = function () {
            $scope.ActiveTab = 'scheme';
        };
    });
</script>

<div ng-app="MyApp" ng-controller="MyController1">
    <div ng-show="showTab('scheme')" style="width: 200px; height: 75px; background-color: aqua;">
        One 
    </div>      
    <div ng-show="showTab('earning')" style="width: 200px; height: 75px; background-color: rgb(129, 63, 190);">
        Two            
    </div>
    <input type="button" value="Back" ng-click="moveBack()" />
    <input type="button" value="Next" ng-click="moveNext()" />
</div>

ng-show为您创建观察者,如果您选中 $scope.$$watchers,您会发现 Angularjs 创建了 2 个观察者以获取 showTab 函数的更改。