繁体   English   中英

一次编译多个JSON文件的调用

[英]Call to Compile Multiple JSON Files in One

现在,这可能是理论上的问题,由于我仍在学习AngularJS,请原谅我笨手笨脚。

有没有一种方法可以使Angular在不同位置调用3个json文件,并且它们都具有相同的布局,然后一次调用“编译”或“加载”一个文件,以增加加载时间?

可以说我们有3个json文件:

第一个JSON文件:

{
   "name": "John",
   "sur": "Smith"
}

第二个JSON文件:

{  
   "name": "John", 
   "sur": "Doe"
}

第三个JSON文件:

{
    "name": "Alice",
    "sur": "Mulder"
}

使用ng-repeat调用它们并显示它们的最有效,最快的方法是什么? 从理论上讲,可以在我们决定使用表达式将它们输入到html中之前,将它们编译到一个“临时json文件”中吗?

最终,您将需要将单个数组绑定到视图。 ng-repeat将遍历数组中的每个项目,并将每个对象漂亮地打印到<pre/>

<div ng-app="myApp">
  <div ng-controller="MyCtrl">
    <div ng-repeat="entry in entries">
      <pre ng-bind="entry | json"></pre>
    </div>
  </div>
</div>

同时开始3个$http.get()请求(显然,您可以将它们更改为file1.jsonfile2.json等)。

每个$http.get()承诺在完成时都会给我们一个response对象。 实际上,我们实际上需要的是response.data (将响应,解析为JSON)给我们,因此Array.prototype.map()您对response每一个承诺,因此它变成了对response.data的承诺。

然后使用$q.all()等待所有这些承诺完成。

$q.all()承诺完成后:我们将获得JSON响应数组。 将该模型添加到我们的$scope

var myApp = angular.module('myApp',[]);

myApp.controller('MyCtrl', function($scope, $http, $q) {
    $q.all(
      [
      $http.get('https://httpbin.org/get'),
      $http.get('https://httpbin.org/get'),
      $http.get('https://httpbin.org/get')
      ]
      .map(function(promise) {
        return promise
        .success(function(response) {
            return response.data;
        })
      })
    )
    .then(function(multipleJson) {
        $scope.entries = multipleJson;
    })
});

普鲁克在这里

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM