Angularjs:显示对象数组

时间:2014-01-17 03:38:19

标签: php angularjs arrays json angularjs-ng-repeat

对于我的生活,我无法提取和打印出我的数组中的数据。我已经在PHP中生成了JSON,并且我已经连接Angularjs来检索这些数据。 Chrome中的Angularjs开发工具告诉我,当我运行代码时,我有一个变量“user”,它是一个对象数组(见下文)。我向用户提供了一个rootScope变量“$ rootScope.user = data;”所以我可以得到它。我是个新人,所以这些都不是最好的做法。

{ 
    user : [{"user_id":"1","firstname":"John","lastname":"Doe","email":"john.doe@email.com","age":"29","height":"74.5","weight":"200","gender":"M","birthdate":"2013-12-31","username":"john.doe","hash":"$2a$10$MECYLWuu6AwRxzBF\/CUys.AuqVm7Lf4BYRGezeusvLe6wNTkU3FEy"}]
} 

这是我在同一页面上使用的ng-repeat,显示上述“用户”在其范围内:

<ul id="biometrics" ng-repeat="info in user">
     <li>Age: {{info.age}}</li>
</ul>

我做错了什么?也许我做错了什么。我是Angularjs的新手,至少可以说。


我尝试了所建议但无济于事。我只想尝试澄清我的代码/情况,以确保我没有搞砸。我想我可能不太清楚,因为这也是我第一次在StackOverflow上发帖。

这就是我的login.php文件返回的内容:

  

[{ “USER_ID”: “1”, “姓名”: “约翰”, “姓”: “Doe的”, “电子邮件”: “john.doe@email.com”, “年龄”: “29” , “高度”: “74.5”, “重量”: “200”, “性别”: “M”, “出生日期”: “2013-12-31”, “photoURL”: “john.doe.jpg”,”用户名 “:” john.doe”, “散列”: “$ 2A $ 10 $ MECYLWuu6AwRxzBF / CUys.AuqVm7Lf4BYRGezeusvLe6wNTkU3FEy”}]

这是我的登录控制器:

app.controller("LoginController", ['$scope', '$rootScope', '$http', '$location', function($scope, $rootScope, $http, $location) {
    $scope.errorMessage = "Wrong password or username";

    $scope.login = function() {

        $http({
            url: "./login.php",
                method: "POST",
                data: { cache: false, username: $scope.username, password: $scope.password },
                headers : {'Content-Type':'application/x-www-form-urlencoded; charset=UTF-8'} 
            }).success(function(data, status, headers, config) {
                $rootScope.user = data;
                $location.path('/dashboard');
            }).error(function(data, status, headers, config) {
                $scope.statusMessage = status;
                alert($scope.errorMessage);
        });
    }
}]);

这是我认为的HTML:

<ul id="biometrics" ng-repeat="info in user">
    <li>Age: {{info}}</li>
</ul>

当我尝试这个时我没有得到任何东西,我尝试了data.user并没有得到任何东西。

3 个答案:

答案 0 :(得分:1)

如果您将数据放入$rootScope,请执行以下操作:

$rootScope.user = data;

然后你应该在视图中使用$root为模型添加前缀:

<ul id="biometrics" ng-repeat="(property, value) in $root.user[0]">
    <li>{{property}}: {{value}}</li>
</ul>

答案 1 :(得分:0)

试试这个。

希望这个人能提供帮助

     <ul ng-repeat="(key,value) in user[0]"> 
            <li>{{key}} : {{value}}</li>      
     </ul>  

答案 2 :(得分:0)

您的数据是一个包含1个元素(对象文字)的数组,需要作为数组引用。

您可以在$ http.success回调中执行1个快速修复:

$rootScope.user = data[0]; /* <-- notice the "[0]" to reference it as an array */

现在您可以在html中引用您的数据,如下所示:

<ul id="biometrics" ng-repeat="info in user">
    <li>Age: {{info.age}}</li>
</ul>