【问题标题】:Getting value from complex JSON array in angular js从角度js中的复杂JSON数组中获取价值
【发布时间】:2016-02-19 19:07:20
【问题描述】:

我有JSON 数组看起来像这样

{
    "-K3OFVYXVUiT-oYXFmgX": {
        "id": 4658,
        "username": "shamon"
    },
    "-K3OFZAt9Qyy9v6z-XYQ": {
        "id": 9891,
        "username": "manu"
    },
    "-K3OFafyCi6g9UhdR2mA": {
        "id": 7219,
        "username": "hari"
    },
    "-K3OGYGGry3pU8_Qkjg_": {
        "id": 8028,
        "username": "shamonsha"
    }
}

我想在<ul> 列表中显示用户名

<ul>
    <li ng-repeat="user in userlist">{{user.username}}</li>
<ul>

但我会得到空结果

更新

这是我的完整代码,它是一个响应表单 firebase url,问题是我会得到 console.log($scope.userlist) 但它不会在 html 列表中更新

.controller('chatCtrl',function($scope){
    messagesRef= new Firebase(chaturl+'userlist');
        messagesRef.on('value', function (snapshot) {
                  var  msg= snapshot.val();
               $scope.userlist=JSON.stringify(msg);
               console.log($scope.userlist);
            });
});

【问题讨论】:

  • user 可能会被分配每个键("-K3OFVYXVUiT-oYXFmgX" 等),而不是 userlist 中的每个值。您可以通过输出{{typeof user}} 来验证这一点(键是字符串,值是对象)。

标签: javascript json angularjs


【解决方案1】:

你可以使用(key, value) in expression

<ul>
    <li ng-repeat="(key, value) in userlist">
        {{value.username}}
    </li>
<ul>

DEMO

编辑:需要使用$scope.$apply(fn) 以便更新更改。

.controller('chatCtrl',function($scope){
    messagesRef= new Firebase(chaturl+'userlist');
    messagesRef.on('value', function (snapshot) {
              var  msg= snapshot.val();
              $scope.$apply(function () { 
                   $scope.userlist=JSON.stringify(msg); 
              });
        });
});

【讨论】:

  • @BlessanKurien,也许你需要$scope.$apply(function () { $scope.userlist=JSON.stringify(msg); });
  • 我可以把它放在哪里?里面messageRef.on
猜你喜欢
  • 2019-03-04
  • 2016-10-13
  • 1970-01-01
  • 2016-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多