【问题标题】:JavaScript update outside function variable from inner function [duplicate]JavaScript从内部函数更新外部函数变量[重复]
【发布时间】:2017-10-17 16:16:01
【问题描述】:
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;
        }
}]);

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

【问题讨论】:

    标签: javascript angularjs closures


    【解决方案1】:

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

    以下是建议将您的服务重构为更典型的模式:

    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;
          });
        }
      }])
    

    【讨论】:

    • 很好!!!不知道,非常感谢您的时间和澄清。
    猜你喜欢
    • 1970-01-01
    • 2021-10-05
    • 2021-03-16
    • 1970-01-01
    • 2012-10-14
    • 2017-06-01
    • 2012-12-31
    • 1970-01-01
    • 2020-09-25
    相关资源
    最近更新 更多