我想在视图中显示json对象。代码是:
<ul ng-repeat="item in items">
<li ng-repeat="(key, val) in item">
{{key}}: {{val}}
</li>
</ul>
在,控制器:
$scope.init = function (){
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState == 4) {
$scope.items = JSON.parse(xhr.responseText);
console.log(JSON.parse(xhr.responseText));
}
};
xhr.open('GET', 'http://127.0.0.1:8000/user_list/', true);
xhr.send(null);
}
在console.log之后我得到了
[{"user_name": "Pranav", "user_id": 1}, {"user_name": "Sagar", "user_id": 2}]
我无法像之前的例子那样操纵。
如何以格式转换它:
$scope.items =
[
{"user_name": "Pranav", "user_id": 1},
{"user_name": "Sagar", "user_id": 2}]
];
所以,我可以使用它。
答案 0 :(得分:1)
您的数据格式正确,但是对于AJAX请求使用Angular的$http
,因为这会触发摘要周期并允许视图更新:
$http.get("http://127.0.0.1:8000/user_list/").success(function(data) {
$scope.items = data;
});
答案 1 :(得分:1)
我在这里创建了一个小提琴:http://jsfiddle.net/fynva/
我在示例中简化了HTTPGET调用,因为您在获取JSON时没有遇到任何问题。这是代码示例。
<div ng-app="myApp">
<div ng-controller="TextController">
<div>
<label for="spSelectViewMenu">Please select the list to view:</label>
<select id="spSelectViewMenu" ng-model="list" ng-options="c.user_name for c in lists"></select><br />
<ul ng-show="list" ng-repeat="(key, val) in list" >
<li>{{key}} : {{val}}</li>
</ul>
</div>
</div>
</div>
<script>
var myAppModule = angular.module('myApp', []);
myAppModule.controller('TextController', function ($scope) {
$scope.lists = JSON.parse('[{"user_name": "Pranav", "user_id": 1}, {"user_name": "Sagar", "user_id": 2}]');
});
</script>