Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript从内部函数更新外部函数变量_Javascript_Angularjs_Closures - Fatal编程技术网

JavaScript从内部函数更新外部函数变量

JavaScript从内部函数更新外部函数变量,javascript,angularjs,closures,Javascript,Angularjs,Closures,我试图更新getSubCategory函数内的数据变量,但该数据变量仅在内部函数范围内更新,并且无法更新外部函数的数据变量,从而导致空对象,即{}初始化。提前谢谢 对于不熟悉承诺概念的开发人员来说,这个问题并不少见。$http服务返回一个由.then()方法实现的承诺。因此,您要做的是在调用.then()方法并实现承诺之前使用响应数据 这里有一个建议将您的服务重构为更典型的模式: angular.module('adminApp') .service('subCategoryFinder', [

我试图更新getSubCategory函数内的数据变量,但该数据变量仅在内部函数范围内更新,并且无法更新外部函数的数据变量,从而导致空对象,即{}初始化。提前谢谢

对于不熟悉承诺概念的开发人员来说,这个问题并不少见。$http服务返回一个由.then()方法实现的承诺。因此,您要做的是在调用.then()方法并实现承诺之前使用响应数据

这里有一个建议将您的服务重构为更典型的模式:

angular.module('adminApp')
.service('subCategoryFinder', ['$http',function($http){
        var self = this;
        self.getSubCategory = function(){
            var data = {};
             $http.get('/app/admin/category/category.json').then(function (response) {
                 data = response.data;
                 console.log(data);
              });
             return data;
        }
}]);

美好的我不知道,非常感谢您的时间和澄清。
angular.module('adminApp')
  .service('subCategoryFinder', ['$http', function($http) {
    this.getSubCategory = function() {
      return $http.get('/app/admin/category/category.json');
    };
  }])
  .controller('myController', ['$scope', 'subCategoryFinder', function($scope, subCategoryFinder) {
      subCategoryFinder.getSubCategory.then(function(response) {
        $scope.subCategories = response.data;
      });
    }
  }])