javascript - 使用 ng-repeat 解析不均匀的 data/json 对象

标签 javascript json angularjs

在这里摆弄http://jsfiddle.net/prantikv/1nvdzv24/9/

我有一些不均匀的数据,像这样

[{
   "fname": "Tonja", //common
    "lname": "Mize",
    "tel": "(963)784-1098",
    "address": "3999 Quis Ln",
    "city": "Sebring",
    "state": "MI",
    "zip": 76593
},
{
    "fname": "Stella", //common
    "Othername": "Lester",
    "mobile": "(936)898-2886"
}];

请注意,只有 fname 属性在两个对象之间是通用的

所以当我这样做时

  <li ng-repeat="(key,val) in populationList | filter:name"> 
 {{ val.**fname**}} 
</li>

我确实得到了 fname,但数据不均匀,所以我无法弄清楚如何遍历每个对象。物体的长度也不同。

我想要做的是通过选择列表过滤数据

<select ng-model="name">
    <option value="Tonja" selected="Tonja">Tonja</option>
    <option value="Stella">Stella</option>
</select>

但我无法找到一种方法来显示对象的不匹配属性 有没有办法动态获取子数据上的所有键:值对?

最佳答案

WORKING DEMO

您的 HTML,

<div ng-app='app'>
 <div ng-controller="DemoCtrl">
    <select ng-options="item.fname for item in populationList | fieldList:'fname'" ng-model="myItem" ng-change="changeSelection(myItem)">
    </select>

   <li ng-repeat="key in availableKeys"> 
         {{selectedObject[key]}} 
    </li>
 </div>
</div>

JS

angular.module('filters',[]).
  filter('fieldList', function() {
      return function(populationList, parameter) {
        var filteredArray = [];
        angular.forEach(populationList, function(value, index) {
             if(value.hasOwnProperty(parameter)) {
                 filteredArray.push(value);
             }
        });
        return filteredArray;
      };
    });


angular.module('app',['filters'])
  .controller('DemoCtrl', function($scope) {
  $scope.changeSelection = function(item) {
    $scope.selectedObject = item;
    $scope.availableKeys = Object.keys($scope.selectedObject);
    };
  $scope.populationList = [{
    "fname": "Tonja", //common
    "lname": "Mize",
    "tel": "(963)784-1098",
    "address": "3999 Quis Ln",
    "city": "Sebring",
    "state": "MI",
    "zip": 76593
     },
     {
    "fname": "Stella", //common
    "Othername": "Lester",
    "mobile": "(936)898-2886"
   }];
});

关于javascript - 使用 ng-repeat 解析不均匀的 data/json 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28911533/

相关文章:

ios - 如何在快速解析时在参数中添加post api请求

angularjs 测试 ng-include 文件是否存在

javascript - Angularjs 函数调用顺序

javascript - 我如何更新我的 MVC 3 站点中的图像?

javascript - 如何将内部 setState 函数重构为静态类方法?

javascript - 在 Node.js 中验证 URL

javascript - 使用 javascript 连接对象数组

javascript - v4 中的 d3 缩放功能问题

angularjs - Angular.js 中的选择选项无法加载

javascript - 使列和行中的所有按钮大小相同?