0

Ich brauche sortierten Daten zu zeigen, mit ng-repeat .Ich Hilfe nimmt aus diesem BeispielWarum benutzerdefinierte Filter nicht in angular js funktioniert?

Order by Object key in ng-repeat

aber hinzugefügt gleiche fitter, aber nicht richtig output.It bekommen ist nicht meine Liste sortieren.

hier ist mein Code http://plnkr.co/edit/qFaBYnwCVTZJZSiw6hdD?p=preview

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

app.controller('MyCtrl',function($scope){ 
    $scope.lines = { 
    "a": {name:"bb"}, 
    "aa":{name: 'aa'}, 
    "zz": {name:"zz"}, 
    "oo":{name: 'oo'}, 
    "kk": {name:"k"}, 
    "j":{name: "a"}, 
    "n": {name:"n"}, 
    "c":{name: "c"} 
} 
}) 
app.filter('toArray', function() { return function(obj) { 
    if (!(obj instanceof Object)) return obj; 
    return _.map(obj, function(val, key) { 
     return Object.defineProperty(val, '$key', {__proto__: null, value: key}); 
    }); 
}}); 

Antwort

0

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

 
app.controller('MyCtrl',function($scope){ 
 
    $scope.lines = { 
 
    "a": {name:"bb"}, 
 
    "aa":{name: 'aa'}, 
 
    "zz": {name:"zz"}, 
 
    "oo":{name: 'oo'}, 
 
    "kk": {name:"k"}, 
 
    "j":{name: "a"}, 
 
    "n": {name:"n"}, 
 
    "c":{name: "c"} 
 
}; 
 
    
 
    $scope.myFilter = function(){ 
 
    var array=[]; 
 
    angular.forEach($scope.lines,function(value,key){ 
 
     array.push(value); 
 
     }); 
 
    return array; 
 
    
 
    } 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<div ng-app="app" ng-controller="MyCtrl"> 
 
    <div ng-repeat="(key, line) in myFilter() | orderBy:'name'"> 
 
     <div class="preview">{{line.name}}</div> 
 
    </div> 
 
    </div>

versuchen dies. Sie sollten die Objekteigenschaft an orderBy übergeben.

<div ng-repeat="(key, line) in lines | toArray | orderBy:'name'"> 

bearbeiten

Sie Filter in controller.like diese

$scope.myFilter = function(){ 
    var array=[]; 
    angular.forEach($scope.lines,function(value,key){ 
    array.push(value); 
    }); 
    return $filter('orderBy')(array, 'name'); 
} 

Filter verwenden, verwenden können, sollten Sie Service-Filter injizieren.

+0

funktioniert nicht bitte überprüfen Sie – user944513

+0

siehe Code-Schnipsel. es funktioniert richtig. –

+0

können wir loadash anstelle von untercrime – user944513

Verwandte Themen