Javascript Angularjs中回调如何使用$scope

Javascript Angularjs中回调如何使用$scope,javascript,angularjs,angularjs-scope,Javascript,Angularjs,Angularjs Scope,假设我们有一个外部模块,其函数需要一个回调参数来执行异步任务。由于我们的参数是一个函数,他们在模块中调用回调函数,那么我们如何使用摘要周期之外的$scope呢?angularjs是如何处理这些事情的 在这种情况下,我们还使用$scope.apply或$scope.digest,那么它们是如何工作的呢 注意:我不需要你提供一些必要的代码,只是想了解一些概念。谢谢 externalModule.doSomething(param, function(result) { $scope.result

假设我们有一个外部模块,其函数需要一个回调参数来执行异步任务。由于我们的参数是一个函数,他们在模块中调用回调函数,那么我们如何使用摘要周期之外的$scope呢?angularjs是如何处理这些事情的

在这种情况下,我们还使用$scope.apply或$scope.digest,那么它们是如何工作的呢

注意:我不需要你提供一些必要的代码,只是想了解一些概念。谢谢

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,而不会出现问题