Angular 1.x - 过滤由引用ID调用的对象

时间:2016-07-03 22:23:26

标签: angularjs filter reference

你好聪明且充满爱心的社区。

我想知道当通过重复数组中的对象键来调用该对象时,是否存在一种过滤对象属性的Angular方法。

这是一个人为的例子,但很重要,因为我的应用程序正在运行firebase,我使用索引来收集特定用户的对象ID。

示例:

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="stackOverflowExample" ng-controller="ExampleCtrl">
  <label>
    <span>Search</span>
      <input type="text" ng-model="search">

  </label>
  <hr>
  <div ng-repeat="objectKey in myObjectKeysArray | filter:search" placeholder="search">
    <p>name: {{ myObject[objectKey].name }}</p>
    <p>age: {{ myObject[objectKey].age }}</p>
  </div>
</div>
https://help.ubuntu.com/community/CronHowto

任何人都可以推荐一种甜蜜的方式来做这个或者我应该在调用repeat之前制作一个数组吗?

1 个答案:

答案 0 :(得分:0)

好吧,如果我理解你的问题,你想要过滤“子阵列”,所以我合并了数组,将该键作为其数组的属性。

这是一个代码片段:

var app = angular.module('app', []);

app.controller('mainCtrl', function($scope) {
  $scope.myObjectKeysArray = [
    'sdav', 'arfg', 'wefc'
  ];

  $scope.myObject = {  
    "sdav":{  
      "name":"mark",
      "age":23
    },
    "arfg":{  
      "name":"lucy",
      "age":18
    },
    "wefc":{  
      "name":"kat",
      "age":19
    }
  };

  $scope.array = [];
  angular.forEach($scope.myObjectKeysArray, function(value, key) {
    $scope.array[key] = {};
    $scope.array[key].key = value;
    $scope.array[key].values = [];
    $scope.array[key].values.push($scope.myObject[value]);
  });      
});
<!DOCTYPE html>
<html ng-app="app">

<head>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.7/angular.min.js"></script>
</head>

<body ng-controller="mainCtrl">
  <label>
    <span>Search</span>
    <input type="text" ng-model="search">
  </label>
  <hr>
  <ul>
    <li ng-bind="arr.key" ng-repeat-start="arr in array" placeholder="search"></li>
    <ul ng-repeat-end ng-repeat="obj in arr.values | filter: { name: search }">
      <li ng-bind="'Name => ' + obj.name"></li>
      <li ng-bind="'Age => ' + obj.age"></li>
    </ul>
  </ul>
</body>

</html>