我正在练习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');
。
答案 0 :(得分:2)
模板更新在值更改后的第一个摘要周期中发生。
警报发生在同一个周期中,因此范围变量会更新,但模板不是因为我们仍然在功能块内(尝试更新它没有意义)在完全评估函数之前的外部东西)。并且警报阻止脚本的进一步执行直到它关闭,这就是为什么在模板更新之前似乎很长一段时间,而实际上它只是下一步之后的步骤函数调用。
我的问题是代码流如何回到$ scope.firstName =&#34; John&#34;和$ scope.lastName =&#34; Doe&#34 ;;警惕之后(&#39; Angular&#39;);在javascript函数中。
流程永远不会回归&#34;但仅使用更改的范围变量值更新模板。正如我所说,保持警报框打开只会阻止代码的进一步执行,一旦你关闭它,函数调用就会结束,观察者会启动一个新的摘要周期并更新模板。