【问题标题】:AngularJS getting data from JSON local fileAngularJS 从 JSON 本地文件中获取数据
【发布时间】:2016-03-16 16:54:25
【问题描述】:

我在使用以下结构从 json 文件中检索数据时遇到问题。 在我的 controller.js 文件中,我有:

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

controllers.controller('AppCtrl', function ($scope, $http){

   $scope.list;

   $http.get('json-folder/name.json').success(function(data, status, headers, config) {

    $scope.list = data.data;
    console.log(data);


});

在那个 name.json 文件中,我有以下结构:

{
   "hotel": [
     {
       "id": 1,
        "name": "Some hotel name",
        "address": "123 Street",
        "category" : [{
            "id": 1,
            "name" : "Category 1",
            "bnb" : "yes",
            "simple" : "some value",
            "double" : "another value"
         },
         {
            "id": 2,
            "name" : "Category 2",
            "bnb" : "no",
            "simple" : "some value 2",
            "double" : "another value 2"
         },
        {
            "id": 3,
            "name" : "Category 3",
            "bnb" : "no",
            "simple" : "some value 3",
            "double" : "another value 3"
         }
         ]
      },
      {
        "id": 2,
        "name": "Some hotel name 2",
        "address": "33333 Street",
        "category" : [{
             "id": 1,
             "name" : "Category 1",
             "bnb" : "yes",
             "simple" : "some value",
             "double" : "another value"
         },
         {
            "id": 2,
            "name" : "Category 2",
            "bnb" : "no",
            "simple" : "some value 2",
            "double" : "another value 2"
         },
         {
            "id": 3,
            "name" : "Category 3",
            "bnb" : "no",
            "simple" : "some value 3",
            "double" : "another value 3"
         }
        ]  
        }
    ],
    "motel": [
        {
          "id": 1,
          "name": "Some motel name",
          "address": "321 Street",
          "category" : [{
              "id" : 1,
              "name" : "Category Motel 1",
              "bnb" : "yes",
              "simple" : "some motel value",
              "double" : "another motel value"
           },
           {
             "id" : 2,
             "name" : "Category Motel 2",
             "bnb" : "no",
             "simple" : "some motel value 2",
             "double" : "another motel value 2"
           }
           ]
       }
     ]
}

最后是我的 html 结构:

<div ng-controller="AppCtrl">
    <ul class="pull-left">
        <li class="pull-left" ng-repeat="hotel in list.hotels">
            {{hotel.name}}
        </li>
    </ul>
</div>
<div ng-controller="CatCtrl">
      <ul class="pull-right">
          <li class="pull-right" ng-repeat="cat in list.categories">
              {{cat.name}}
          </li>
      </ul>
  </div>

我没有得到任何回报,也没有任何错误... 我想要的是一个带有酒店名称的 ul li,在另一个类似的 div 中,我想再次列出类别名称以及来自酒店下类别的其他数据。请注意,CatCtrl 与 AppCtrl 相同...

知道我第一个做错了什么,我应该在其他控制器中进行哪些更改以获得我需要的内容?

谢谢。

【问题讨论】:

  • 不应该$scope.list = data.data 改为$scope.list = data 吗? data 已经是 JSON 本身了
  • list 没有属性hotelscategories .. 它有hotelmotel。完全不清楚你想要 categories 数组是什么样子
  • @lucasnadalutti 如果我删除该数据,我会得到第一个正确的数据
  • @charlietfl 好的,我想要的是遍历酒店类别并将它们显示在页面上。我已经有了第一个建议的名字。

标签: javascript jquery angularjs json


【解决方案1】:

现在您已经正确理解了第一部分,获取类别应该需要将代码更改为:

<div ng-controller="AppCtrl">
    <ul class="pull-left">
        <li class="pull-left" ng-repeat="hotel in list.hotel">
            {{hotel.name}}
            <ul class="pull-right">
                <li class="pull-right" ng-repeat="cat in hotel.category">
                    {{cat.name}}
                </li>
            </ul>
        </li>
    </ul>
</div>

我将依靠您的 CSS 技能来正确排列显示。

【讨论】:

  • 我在编辑器中收到此错误:未解析的变量酒店。
  • 然后尝试list.hotels。在您的原始代码中,您使用了list.hotels,但在您提供的 JSON 中属性是hotel,所以我不确定。大概和category/categories一样。
  • 好吧,我改变了,但什么也没发生,我把它添加到酒店,所以现在是 json 中的酒店和汽车旅馆......接下来我应该尝试什么?我在页面上没有任何关于类别的输出...
  • 请注意,cat in hotel.category 中的 category 也应该与 JSON 中每个 hotel 中的 category 相同。如果属性名称为categories,也应相应更改。即便如此,还是没有运气?
  • 还是什么都没有,所以在 JSON 中我有 hotels 而不是 hotelcategories 而不是 category 然后我就像你说的那样:ng-repeat="cat in hotels.categories" 最后是 {{cat.name}}而且我什么也得不到。
猜你喜欢
  • 1970-01-01
  • 2015-04-07
  • 2020-03-24
  • 2014-09-19
  • 1970-01-01
  • 2019-03-05
  • 2016-05-25
  • 1970-01-01
  • 2015-06-09
相关资源
最近更新 更多