Javascript Angularjs中回调如何使用$scope
假设我们有一个外部模块,其函数需要一个回调参数来执行异步任务。由于我们的参数是一个函数,他们在模块中调用回调函数,那么我们如何使用摘要周期之外的$scope呢?angularjs是如何处理这些事情的 在这种情况下,我们还使用$scope.apply或$scope.digest,那么它们是如何工作的呢 注意:我不需要你提供一些必要的代码,只是想了解一些概念。谢谢Javascript Angularjs中回调如何使用$scope,javascript,angularjs,angularjs-scope,Javascript,Angularjs,Angularjs Scope,假设我们有一个外部模块,其函数需要一个回调参数来执行异步任务。由于我们的参数是一个函数,他们在模块中调用回调函数,那么我们如何使用摘要周期之外的$scope呢?angularjs是如何处理这些事情的 在这种情况下,我们还使用$scope.apply或$scope.digest,那么它们是如何工作的呢 注意:我不需要你提供一些必要的代码,只是想了解一些概念。谢谢 externalModule.doSomething(param, function(result) { $scope.result
externalModule.doSomething(param, function(result) {
$scope.result = result;
$scope.$apply();
})
事实上就是这样。然而,包装所有外部模块是一种很好的方式——例如,您可以查看对javascript函数的$http、$interval、$timeout包装调用。
因此,您应该将此代码放在一些factory externalModuleWrap中:
module.factory('externalModuleWrap', function($rootScope, $q) {
return {
doSomething: function(param) {
var defer = $q.defer();
externalModule.doSomething(param, function(result) { defer.resolve(result); }
$rootScope.$apply();
return defer.promise;
}
}
})
现在,您可以从角度项目的任何点调用externalModuleWrap,而不会出现问题