以ng-repeat显示字符串输出

时间:2014-04-02 17:50:27

标签: javascript json angularjs

我想在视图中显示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}]
    ];

所以,我可以使用它。

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>