javascript - Angularjs - 如何存储从 $http.get 收到的响应?

标签 javascript angularjs

我有一个 json 文件。我想使用 $http.get 从该文件获取数据并将其存储在变量中,以便稍后在 Controller 中使用它。像这样的事情:

$http.get('items.json').success(function(response){
    var data = response;    //data can't be used outside this function
})

我想在函数外部使用data

最佳答案

您可以通过以下方式完成:

var data;
$http.get('items.json').success(function(response){
    data = response;    //data can't be used outside this function
})

现在 Controller 的所有方法都可以访问这里的数据。

但我的建议是制作一个 Angular 服务并将 $http 代码放入其中。然后注入(inject)这个服务 在您的 Controller 中并使用它。

下面是代码:

服务代码:

app.service('MyService', function($http) {
  this.getData = function(successHandler, failureHandler) {
    $http.get('items.json').then(function(response){
      successHandler(response);    //data can't be used outside this function
    }, function(response) {
      failureHandler(response);
    })

  }
}); 

Controller 代码:

app.controller('MyCntrl', function($scope, MyService) {
  var data;

  function successHandler(res) {
    data = res;
  }

  function failureHandler(res) {
    data = res;
  }

  $scope.getData = function() {
    MyService.getData(successHandler, failureHandler);
  }

});

上述解决方案将帮助您区分与服务和 Controller 相关的问题,并使您的应用程序 更加模块化和可维护。

关于javascript - Angularjs - 如何存储从 $http.get 收到的响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37339581/

相关文章:

javascript - 如何使用嵌套引用验证 JSON 模式

javascript - 如何更改 Maps API v3 中多段线的路径?

javascript - 使用 for in 循环访问对象属性而不知道它的父对象

javascript - 无法删除该值并取消选中复选框的项目?

Javascript 如何添加显示 DOM 元素的延迟?

javascript - Angular UI-map 多次调用 uiMapInfoWindow 内的按钮函数

javascript - Angular 切换背景图像

javascript - 使用 Angularfire 从 Firebase 获取特定键的数组

javascript - 如何使用 C++ 中的 V8 同时运行一堆 JS 代码?

javascript - 观看时属性的 ngModel 值未定义