【问题标题】:ng-repeat key not displaying using JSON datang-repeat 键不使用 JSON 数据显示
【发布时间】:2013-03-04 03:16:46
【问题描述】:

我的服务抓取 JSON 数据并将数据成功返回到控制器,但是我在使用 ng-repeat 迭代键名时遇到问题。

我想将页面上的键名称显示为列表,因为它们是类别名称。

目前 ng-repeat 迭代次数正确但不显示键名。

控制器:

app.controller('getNav', function(getJSONData, $scope) {
    var path = 'json/navigation';
    getJSONData.async(path).then(function(d) {
        $scope.data = d;    
    });
});

服务:

app.factory('getJSONData', function($http) {
  var getJSONData = {
    async: function(path) {
      var promise = $http.get(path).then(function (response) {
        return response.data;
      });
      return promise;
    }
  };
  return getJSONData;
});

JSON 数据:

{ 
     "data": {
         "category_a": ["a", "b", "c", "d"], 
         "category_b": ["e", "f", "g"], 
         "category_c": ["h", "i", "j"]
     }, 
     "response": "Navigation"
}

查看:

<ul ng-controller="getNav">
   <li data-ng-repeat="(key, value) in data.data">Category name is: {{key}}</li>
</ul>

【问题讨论】:

  • You ng-repeat 很好:plunker.
  • 这让我更加困惑,因为我不知道为什么上面的例子不起作用。控制器成功检索数据,范围似乎在迭代,但它从不显示键名。
  • 在 getJSONData 回调函数中使用 console.log() 来检查/转储从服务器返回的 JSON 数据,以确保其格式正确。
  • @mark 数据被记录为一个对象。会是这个原因吗?
  • 不一定。在控制器中使用 Stewie 的 plunker 和 console.log($scope.data)。将该输出(在 Chrome 中显示“对象”,但我可以将其展开以查看所有数据)与您从服务器返回的内容进行比较。如果它们看起来相同,那么这不是您的问题。

标签: angularjs angularjs-ng-repeat


【解决方案1】:

好的,希望我能帮助将来遇到同样问题的人。我浪费了一天的时间把头发拉在这该死的东西上。从我的谷歌应用程序引擎中分离出文件后,我发现这些文件可以在简单的 MAMP localhost 上运行,但不能在谷歌应用程序引擎上运行。

经过一番搜索,我发现这是因为 Angular 和 DJango 使用 {{}} 的模板标签冲突。所以只需设置 angular 来使用不同的东西,问题就会得到解决,见这里:

AngularJS with Django - Conflicting template tags

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-28
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    相关资源
    最近更新 更多