Javascript $scope.apply()何时应用于angular?
$scope.apply的作用是什么?在某些情况下,如果$scope.apply()不存在,则不会触发$scope.watch()。比如说, 控制器具有以下功能:Javascript $scope.apply()何时应用于angular?,javascript,angularjs,angularjs-scope,Javascript,Angularjs,Angularjs Scope,$scope.apply的作用是什么?在某些情况下,如果$scope.apply()不存在,则不会触发$scope.watch()。比如说, 控制器具有以下功能: setTimeout(function(){ $scope.person = someperson; }, 500); 指令中正在监视该人 $scope.watch('person', function(){ console.log($scope.person); $scope.apply(); }); 在这种情况下,
setTimeout(function(){
$scope.person = someperson;
}, 500);
指令中正在监视该人
$scope.watch('person', function(){
console.log($scope.person);
$scope.apply();
});
在这种情况下,仅当存在apply时才会触发监视。如果您在外部(从外部JavaScript)修改AngularJS模型,则应使用$scope。$apply()让AngularJS知道模型已更改。在您的示例中,使用setTimeout(),这是一种异步外部js方法。但是,如果您使用AngularJS$timeout,则不需要调用$scope。$apply()。
setTimeout(function(){}
:-这是javascript函数,不在anuglar js的范围内,您需要在$scope.apply()的帮助下手动应用摘要循环
相反,你可以使用$timeout服务,这是一种更具角度的方式。$scope.apply()将触发AngularJS的$digest循环。简单地说,这只是一种触发应用程序重新启动的便捷方式
通常,当您想要运行angular应用程序之外的一段代码时,会使用它
直接从文件中获取:
$apply()用于从外部以角度执行表达式
角度框架(例如,来自浏览器DOM事件、,
setTimeout、XHR或第三方库)。因为我们正在调用
我们需要的角度框架执行适当的生命周期范围
异常处理,执行监视
将scope.$apply()与jQuery日期选择器一起使用的示例:
angular.module('customApp', []).directive('datepicker', function () {
return {
require: 'ngModel',
link: function (scope, element, attrs, ngModelCtrl) {
jQuery(element).datepicker({
onSelect: function (date) {
scope.myDate = date;
scope.$apply();
}
});
}
};
});