范围内任何不是由 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;
});