范围内任何不是由 Angular 完成的更新对 Angular 来说都是不明显的。所以你必须$scope.$apply();在更新 current 中的任何值时使用$scope。
Angular 是一种双向数据绑定机制,因此当您更改模型时会更新视图,反之亦然。内部 angular 运行一个$digest循环,该循环执行当前的所有检查$scope。只要您$scope在角度内的变量中进行更新,事情就会正常进行,但在它之外,如果您使用本机 javascript 或其他库(如 jQuery)更改值,则$digest必须运行循环,这很$scope.$apply()方便。
$scope.$digest()也非常有用,它比$scope.$apply()在$scope.$digest()当前范围内运行但在内部$scope.$apply()运行$rootscope并在内部触发时要快得多$rootscope.$digest()。
$scope.$digest()要首先使用它,您需要设置一个范围观察器,它的实际作用是,它会不断地观察范围的变化,无论如何,无论是来自角度还是来自像你这样的其他来源,在这种情况下都是设置范围观察器的完美示例如果你想使用 with $scope.$digest()。
$scope.$watch('reportLoaded', function(newValue, oldValue, scope) {
scope.reportLoaded = newValue !== oldValue ? newValue : oldValue;
});