2016-06-20 13 views
0

Ich versuche eine Sammlung in der ng-init zu initialisieren. Warum funktioniert dieser Code nicht?Filter in angular ng-init

<div ng-app="myApp" ng-controller="PeopleCtrl"> 
    <ul ng-init="myPeople=(people|filter:{show:true})" ng-repeat="person in myPeople"> 
    <li>{{person.name}}, {{person.show}} 
    </ul> 
</div> 

CodePen

Ich brauche nicht ng-if oder andere Dinge verwenden, ich frage mich nur, wenn möglich, eine Sammlung mit einem Filter in ng-init

Antwort

2

ng-init würde nicht funktionieren, wenn Daten asynchron kommen, und ich denke nicht, dass ng-init Ihrem Fall passt.

Ich würde vorschlagen, dass Sie Alias ​​für gefilterte Daten in ng-repeat selbst zu verwenden, während myPeople Sammlung Filterung

ng-repeat="person in people|filter:{show:true} as myPeople" 
+0

nur ... ist es möglich, es in der ng-init zu verwenden? Ich möchte das Elternelement von ng-repeat ausblenden, wenn keine Elemente im Filter, wie folgt: http://codepen.io/serhio/pen/aZmjGW?editors=1010 – Serge

0

zu initialisieren Ja Sie Filter in ng-init initialisieren wie

ng-init="FilteredGeojson = (ho | filter:search)" 

Grüße.

+0

wie ich in den OP zu tun? – Serge

0

Da Sie Ihre ng-init auf Element zu schreiben, die Sie ng-init Code laufen für neuen Tag jedes Mal wiederholt. Um dies zu vermeiden, schreibe ng-init somewhere sonst.

Gefällt Ihnen dieses

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

 
myApp.controller('PeopleCtrl', function($scope, $window) { 
 

 

 
    $scope.people = ([{ 
 
    id: 17, 
 
    name: "Peter", 
 
    age: 21, 
 
    show: true 
 
    }, { 
 
    id: 07, 
 
    name: "David", 
 
    age: 20, 
 
    show: false 
 
    }, { 
 
    id: 37, 
 
    name: "Anil", 
 
    age: 22, 
 
    show: true 
 
    }, { 
 
    id: 45, 
 
    name: "Anil", 
 
    age: 19, 
 
    show: false 
 
    }]); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<div ng-app="myApp" ng-controller="PeopleCtrl" ng-init="myPeople=(people|filter:{show:true})"> 
 
    <ul ng-repeat="person in myPeople"> 
 
    <li>{{person.name}}, {{person.show}} 
 
    </ul> 
 
</div>