编程语言
首页 > 编程语言> > javascript-如何在ng-repeat(AngularJS)中绑定多个JSON文件?

javascript-如何在ng-repeat(AngularJS)中绑定多个JSON文件?

作者:互联网

我有多个JSON文件:

main.json:

{
  "MainRegister": [
    {
      "name": "Name1",
      "url": "url1.json",
    },
    {
      "name": "Name2",
      "url": "url2.json",
    },
 ]
}

url1.json

{
  "SubInformation": {
    "description": "Hello World 1",
    "identifier": "id1",
  }
}

url2.json

{
  "SubInformation": {
    "description": "Hello World 2",
    "identifier": "id2",
  }
}

现在,我想在index.html中创建一个ng-repeat div,以便它加载文件中的所有字段,此外,我想显示以下输出:

>名称1:Hello World 1(id1)
>名称2:Hello World 2(id2)

如何以ng-repeat方式绑定这些文件?还是有另一种方法?

解决方法:

您需要先加载它们,然后设置一个范围变量,该变量在数组中包含必需的数据.您可以在控制器中完成$http的获取(如下例所示),但是如果它可以重用或者比简单的应用程序还要多,我建议您在注入服务中使用.

.controller('MyCtrl', function($scope,$http){
   $scope.entries = [];
   $http.get('main.json').success(function(data) {
      angular.forEach(data.MainRegister,function(entry) {
         $http.get(entry.url).
          success(function(data) {
            $scope.entries.push(angular.extend(entry,data.SubInformation);
         });
      });
   });
});

然后您的模板可以看起来像

<div ng-repeat="entry in entries">
  <span>{{entry.name}}: {{entry.description}} ({{entry.id}})</span>
</div>

如果要订购过滤器,或以特定顺序加载$scope.entries,或者如果在所有准备就绪之前不显示任何条目,则可以使用过滤器,则可以设置一个就绪的var,或仅设置$scope.entries结尾,依此类推.

让我补充一点,我不喜欢这种越来越深的嵌入式ajax调用以及它们的系列,但这是样式问题.我已成为caolan异步库的忠实拥护者,以使上述控制器代码更加简洁. http://github.com/caolan/async

标签:angularjs,angularjs-ng-repeat,json,javascript
来源: https://codeday.me/bug/20191028/1955984.html