javascript - 回调如何在 Angularjs 中与 $scope 一起使用

标签 javascript angularjs angularjs-scope

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

在这种情况下我们也会使用 $scope.apply()$scope.digest(),那么它们是如何工作的呢?

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

最佳答案

externalModule.doSomething(param, function(result) {
  $scope.result = result;
  $scope.$apply();
})

其实就是这样。然而,包装所有外部模块是一种很好的风格 - 作为示例,您可以查看 $http、$interval、$timeout 包装对 javascript 函数的调用。 所以你应该把这段代码放在一些工厂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;
    }
  }
})

现在您可以从 Angular 项目的任何点调用 externalModuleWrap,不会出现任何问题。

关于javascript - 回调如何在 Angularjs 中与 $scope 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46527906/

相关文章:

javascript - 转义 ' 和 & 以及 url 中的类似字符

javascript - 使用 Angular 选择未按预期工作

javascript - 如何在 AngularJS 中单击按钮显示所有元素的计数?

angularjs - 为什么格式化程序不适用于隔离范围?

angularjs - ng-repeat 中 ng-click 调用的赋值表达式的行为

javascript - 获取选项卡的消息管理器? (Firefox 附加 SDK)

javascript - 使链接在一定时间内无法点击

javascript - 多次将数组传递给函数

unit-testing - AngularJS : Need help to unit test a factory with promise

angularjs - 如何从 Angular 表达式中的全局 API 调用函数?