2016-06-20 11 views
0

ng-initでコレクションを初期化しようとしています。なぜこのコードが機能しないのですか?はいあなたはng-initでフィルタを初期化することができますng-init角度ng-initでのフィルタ

答えて

2

ng-initはデータが非同期的に送信されても​​機能しません。私はそうとは思わないng-initあなたのケースに合っています。 myPeopleコレクション

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

ちょっと...それはng-initで使えるのですか?フィルタに要素がない場合、ng-repeatの親要素を非表示にしたいとします。http://codepen.io/serhio/pen/aZmjGW?editors=1010 – Serge

0

にフィルタを使用してコレクションを初期化するために、可能な場合、私はng-ifまたは他のものを使用する必要はありません

<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

は、私だけだろうlike

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

よろしく。

+0

同様

私はOPで行うように? – Serge

0

をフィルタリングしながら、あなたはあなたのng-initコード実行の新しいタグのたびに繰り返される要素で、あなたのng-initを、書くので

私は、あなたがng-repeat自体にフィルタリングされたデータのエイリアスを使用することをお勧めしたいです。これを避けるには、ng-init somewhere elseを書きます。この

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>

関連する問題