<!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的新手,所以请善意让我知道为什么会发生这种情况
答案 0 :(得分:5)
每次角度发出范围更改事件时,都会调用范围函数。这是为了伪造一个名为Object.watch
的ES6函数。
因此,多次调用它并不重要,这只是Angular检查更改的方式;)
答案 1 :(得分:1)
因为$ scope.fullName是每次firstName或lastName更改时都会调用的函数,并且在此函数内部有一个console.log调用,它会在每次更改时记录fullName。