假设我们有一个外部模块,其中有一个函数需要异步任务的回调参数。由于我们的参数是一个函数,并且它们在模块中调用该回调函数,那么我们如何使用摘要循环之外的 $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/