AngularJS如何运作?

时间:2014-11-25 12:23:34

标签: angularjs

我正在练习AngularJS,我想了解AngularJS是如何工作的。

如果我们尝试以下代码

<!DOCTYPE html>
<html>

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

<body>

<div ng-app="" ng-controller="personController">

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

</div>

<script>
function personController($scope) {
    $scope.firstName = "John",
    $scope.lastName = "Doe";
alert('Angular');
}
alert('JS');
</script>

</body>
</html>
http://www.w3schools.com/angular/tryit.asp?filename=try_ng_controller

中的

然后我们首先获得“JS”警报,我们可以看到仍未处理全名的表达式。 如果我们单击“确定”以显示警告框,则会出现“Angular”的第二个警报,并且仍需要处理“全名”。 但是,只要我们单击“确定”以获取第二个警报框,就会立即处理“全名”表达式。

我的问题是代码流如何在控制器内$scope.firstName = "John"之后返回$scope.lastName = "Doe";alert('Angular');

1 个答案:

答案 0 :(得分:2)

模板更新在值更改后的第一个摘要周期中发生。

警报发生在同一个周期中,因此范围变量会更新,但模板不是因为我们仍然在功能块内(尝试更新它没有意义)在完全评估函数之前的外部东西)。并且警报阻止脚本的进一步执行直到它关闭,这就是为什么在模板更新之前似乎很长一段时间,而实际上它只是下一步之后的步骤函数调用。

  

我的问题是代码流如何回到$ scope.firstName =&#34; John&#34;和$ scope.lastName =&#34; Doe&#34 ;;警惕之后(&#39; Angular&#39;);在javascript函数中。

流程永远不会回归&#34;但仅使用更改的范围变量值更新模板。正如我所说,保持警报框打开只会阻止代码的进一步执行,一旦你关闭它,函数调用就会结束,观察者会启动一个新的摘要周期并更新模板。