【发布时间】: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