簡體   English   中英

AngularJs ng重復對象orderBy通過數組中的object-id

[英]AngularJs ng-repeat of objects orderBy object-id in array

我想通過對象的特定對象“ id”對對象進行ng-repeat的結果排序。 此順序在數組中,因此我ng-repeat="line in dataObject|objectIdFilter:orderByArray"了此自定義過濾器ng-repeat="line in dataObject|objectIdFilter:orderByArray"

.filter('objectIdFilter', [function() {
    return function(inputObjet, orderArray) {
        var result = [];
        angular.forEach(orderArray, function(value) {
          result.push(inputObjet[value]);
        });
        console.log(result);
        return result;
    }
}])

這是一個基本控制器的示例,其中的對象和訂單ID位於數組中:

.controller('MainCtrl', ['$scope', function($scope) {

  $scope.dataObject = {
    1: {username:'user1'},
    10: {username:'user10'},
    20: {username:'user20'},
    500: {username:'user500'}
  };

  $scope.orderByArray = [20,10,1,500];

}])

使用他的HTML:

<div ng-app="myApp">
  <div ng-controller="MainCtrl">
      <div ng-repeat="line in dataObject|objectIdFilter:orderByArray">{{line.username}}</div>
  </div>
</div>

Jsfiddle: https ://jsfiddle.net/infnadanada/tLrx4uro/

所以...

  • 一切正常,但是我不知道是否還有另一種訂購ng-repeat的方法,而無需使用自定義過濾器。

  • 同樣,如果您在瀏覽器控制台中轉到Jsfiddle,則可以看到我的自定義過濾器是如何返回結果的2倍,我也不知道為什么。

PD:英語不是我的第一語言:D

謝謝

可能還有另一種好方法,但是您可以在不使用過濾器的情況下在控制器內部過濾數據。 通過使用此功能,您可以防止兩次調用過濾器。

$scope.dataObject = {
    1: {username:'user1'},
    10: {username:'user10'},
    20: {username:'user20'},
    500: {username:'user500'}
  };
  $scope.orderByArray = [20,10,1,500];
   $scope.result = [];
  angular.forEach($scope.orderByArray, function(value) {
      $scope.result.push($scope.dataObject[value]);
  });
}]);

模板內

<div ng-app="myApp">
  <div ng-controller="MainCtrl">
      <div ng-repeat="line in result">{{line.username}}</div>
  </div>
</div>

其他方式:您可以遍歷maphttps : //jsfiddle.net/sherali/tLrx4uro/2/

$scope.dataObject = {
    1: {username:'user1'},
    10: {username:'user10'},
    20: {username:'user20'},
    500: {username:'user500'}
  };
  $scope.orderByArray = [20,10,1,500];
  $scope.result = $scope.orderByArray.map(function(value){
      return $scope.dataObject[value];
  });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM