2017-07-11 10 views
-1

私はAngularが初めてで、アイスクリームのシンプルなリストも作成しています。オブジェクト(各アイスクリームのオブジェクト)を含むJSONファイルからデータを取得します。すべてのオブジェクトには "beschikbaar"というプロパティがあり、 "Ja"または "Nee"に設定されます(仕事を簡単にする場合はtrueまたはfalseにすることもできます)。私がng-repeatで作ったリストでは、プロパティ "beschikbaar"が "Ja"またはtrueに設定されている項目のみを表示したいと考えています。さもなければ私はそれらを隠したいと思う。私はそれを行うことができません。JSON /オブジェクトのAngularJSフィルター

これを修正するには、ビュー内の単純なフィルタを使用するか、これを行うカスタムフィルタが必要ですか?私はexpがありません。カスタムフィルタを使用します。

私はすべての種類のことを試しましたが、現在のビューのフィルタは試しただけの例です。

私のコード

VIEW

 <ion-item ng-repeat="item in icecreams | filter: {item.beschikbaar}:Ja" class="item-thumbnail-left" href="#"> 
     <img src="http://placehold.it/100x100"> 
     <h2>{{ item.name }}</h2> 
     <p>{{ item.info }}</p> 
     <h4>{{ item.type }}</h4> 
     <h4>In de winkel tot: {{ item.end_date }}</h4> 
     </ion-item> 

JSON

[ 

     { 
      "name" : "Aardbei Sorbet", 
      "type" : "Sorbet", 
      "info" : "Aardbei sorbet ijs is een frisse en zoete ijssmaak. Heerlijk voor in de zomer met bijvoorbeeld slagroom en chocolade ijs. Gemaakt met Hollandse Aardbeien.", 
      "end_date" : "Maandag 17 Juli", 
      "ingre" : "Hollandse aardbeien, melk, water, vanille roomijs", 
      "suikervrij" : "Nee", 
      "gluten" : "Nee", 
      "beschikbaar" : "Ja"    
     }, 

     { 
      "name" : "Mango Sorbet", 
      "type" : "Sorbet", 
      "info" : "Mango sorbet ijs is een exotische smaak. Met dit ijs krijg je het gevoel alsof je in een ver en exotisch land bent. Gemaakt met echte mango. Lekker te combineren met Ananas ijs.", 
      "end_date" : "Maandag 17 Juli", 
      "ingre" : "Mango stukjes, citroensap, water, vruchtvlees ananas", 
      "suikervrij" : "Nee", 
      "gluten" : "Ja", 
      "beschikbaar" : "Ja"       
     }, 

     { 
      "name" : "Tompouchen ijs", 
      "type" : "Special", 
      "info" : "Een hema naast de winkel is garantie voor lekker ijs. Tompouchen ijs is een leuk experiment geworden. De romige smaak komt er in terug en ik heb er voor gezorgd dat hij niet extreem zoet is!", 
      "end_date" : "Maandag 17 Juli", 
      "ingre" : "Tompouchen, cakebeslag, room, melk, water", 
      "suikervrij" : "Nee", 
      "gluten" : "Ja", 
      "beschikbaar" : "Ja"    
     }, 

     { 
      "name" : "Drop ijs", 
      "type" : "Snoep", 
      "info" : "Ijs van drop, hoe tof is dat? Zoet van smaak, met een authentieke drop smaak. Gemaakt op basis van drop en vanille ijs.", 
      "end_date" : "Maandag 17 Juli", 
      "ingre" : "Tompouchen, cakebeslag, room, melk, water", 
      "suikervrij" : "Nee", 
      "gluten" : "Ja", 
      "beschikbaar" : "Nee" 
     } 

] 

コントローラ

.controller('MainController', ['$scope', '$http', function($scope, $http){ 

    $http.get('js/data.json').success(function(data) { 
    $scope.icecreams = data; 
    }); 

}]); 

私はこの主題の多くの疑問がある知っているが、私は単に」することができますそれを働かせてください。助けてくれてありがとう!

+0

フィルタリングのビジネスロジックを 'success'関数内に適用するだけではどうですか?あなたが常に静的なファイル(データ転送が少ない、より高速なものなど)を取得するだけではない場合は、サーバー側でこれを処理する方が良いでしょう。 –

+0

@KevinFriedheim今後、私は利用可能なアイテムと利用できないアイテムのリストを表示したいと思います。 – Gijsberts

答えて

3

フィルタなしでこれを達成できます。ちょうどng-ifを使用してください。

<ion-item ng-repeat="item in icecreams" class="item-thumbnail-left" href="#" ng-if="item.beschikbaar == 'Ja'"> 
     <img src="http://placehold.it/100x100"> 
     <h2>{{ item.name }}</h2> 
     <p>{{ item.info }}</p> 
     <h4>{{ item.type }}</h4> 
     <h4>In de winkel tot: {{ item.end_date }}</h4> 
</ion-item> 
+0

これはフィルタリングではなく、これを行う最良の方法ですか?私はAngularJSの専門家ではありませんが、最も正しい方法を可能にしたいと思います。 – Gijsberts

+0

私はあなたが達成しようとしていることを「フィルタリング」することは考えていません。フィルタリングは、ユーザーがあなたのリストを異なる方法で表示すべき何かを入力していることを私に示します。ここでは、最初に表示するものを選択するだけです。ここでは 'ng-if'で十分です。フィルタは過度に使用されます。 –

+0

申し訳ありません、あなたの時間をありがとう:)それは完全に正常に動作しています。あなたが 'ion-item' divの中に別のdivを追加すると、そのスタイルを混乱させるので、私はあなたの質問をイオンとマッチさせるために編集しました。ありがとう! – Gijsberts

関連する問題