为什么范围函数被多次调用?

时间:2015-04-22 08:01:51

标签: angularjs

<!DOCTYPE html>
<html>

<head>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js"></script>
 </head>

<body>

<div ng-app="myApp" ng-controller="personCtrl">

 First Name: <input type="text" ng-model="firstName"><br>
 Last Name: <input type="text" ng-model="lastName"><br>
<br>
Full Name: {{fullName()}}

</div>

<script>
var app = angular.module('myApp', []);
app.controller('personCtrl', function($scope) {
$scope.firstName = "John";
$scope.lastName = "Doe";
$scope.fullName = function() {
 console.log("inside");
    return $scope.firstName + " " + $scope.lastName;
}
});
</script>

</body>
</html>

控制台日志值显示在里面三次..我是angularjs的新手,所以请善意让我知道为什么会发生这种情况

2 个答案:

答案 0 :(得分:5)

每次角度发出范围更改事件时,都会调用范围函数。这是为了伪造一个名为Object.watch的ES6函数。

因此,多次调用它并不重要,这只是Angular检查更改的方式;)

答案 1 :(得分:1)

因为$ scope.fullName是每次firstName或lastName更改时都会调用的函数,并且在此函数内部有一个console.log调用,它会在每次更改时记录fullName。