考虑以下简单的代码。
index.html
<!doctype html>
<html lang="en" ng-app="app">
<head>
<meta charset="utf-8">
<script src="angular/angular.js"></script>
<script src="app.js"></script>
</head>
<body ng-controller="RootController as controller">
<input ng-model="controller.variable" />
</body>
</html>
app.js
"use strict";
const app = angular.module("app", []);
app.controller(
"RootController",
class
{
constructor()
{
this.variable = "apples";
setTimeout(
() => this.variable = "oranges",
0
);
}
}
);
我希望发生的是,控制器上的variable
属性基本上会立即设置为“橙色”,并且此更改将在视图中立即可见。这不是会发生的事情。相反,即使setTimeout被触发,值“ oranges”也不会立即可见。如果单击<input />
以使其聚焦,然后在其外部单击以使其散焦,则然后呈现新的“橙色”值。
是什么解释了此行为,以及如何从异步回调内部正确设置控制器值?