2016-01-27 280 views
0

這裏我試圖創建一個包含美食廣場菜單項的列表。我想根據輸入框中的搜索過濾掉我的列表。但是對於AngularJS的默認過濾器,它不會將過濾器應用於列表中存在的每個值。例如,從結果填充的例子中,我可以根據商品名稱(如關鍵字Idly,Dosa)以及價格來過濾它,但不能與foodcourt名稱,供應商名稱(即kamath)和食品類型(即早餐,午餐晚餐)。帶嵌套對象的AngularJS過濾器

HTML:

<div ng-app="fcApp" ng-controller="fcController"> 
    <div class="control"> 
     <input type="search" ng-model="txtSearch" placeholder="search here"/> 
    </div> 
    <div id="menu"> 
     <div ng-repeat="foodCourt in fcMenu" > 

      <div ng-repeat="vendor in foodCourt.foodCourtDetails"> 

       <div ng-repeat="foodType in vendor.vendorDetails"> 
        <div class="foodItem" ng-repeat="foodDetails in foodType.foodItemDetails | filter:txtSearch"> 
          <div>{{foodDetails.itemName}} - {{foodType.foodTypeName}}</div> 
          <div>{{vendor.vendorName}} - {{foodCourt.foodCourtName}}</div> 
          <div>{{foodDetails.itemPrice}}</div>    
        </div> 
       </div> 
      </div> 
     </div> 
    </div> 
</div> 

CSS:

*{margin:0;padding:0;}body{background:#000;color:#fff;} 
.control{display:block;margin:10px 0;} 
.control input{width:100% !important;box-sizing:border-box;} 
input[type="search"]{width:inherit;padding:0.7em 0.5em;} 
.foodItem{border:2px solid #CCC;border-radius:6px;margin:5px 0;} 

的Javascript:

var fcJSON = '[{"foodCourtName":"FoodCourt1","foodCourtDetails":[{"vendorName":"Adigas","vendorDetails":[{"foodTypeName":"Breakfast","foodItemDetails":[{"itemName":"Idly - 2 Nos","itemDesc":"Idly - 2 Nos","itemPrice":" Rs. 20.00 ","itemComposition":"60gms each + 80 ml Chutney & 100 ml Sambar","isVegetarian":"TRUE","isSpecial":"FALSE"},{"itemName":"Idly - vada (1 Idly + I vada)","itemDesc":"(1 Idly + I vada)","itemPrice":" Rs. 25.00 ","itemComposition":"60 gms each piece+ 80 ml Chutney & 100 ml Sambar","isVegetarian":"TRUE","isSpecial":"TRUE"},{"itemName":"Idly - vada (2 Idly + I vada)","itemDesc":"(2 Idly + I vada)","itemPrice":" Rs. 35.00 ","itemComposition":"60 gms each piece+ 80 ml Chutney & 100 ml Sambar","isVegetarian":"TRUE","isSpecial":"FALSE"},{"itemName":"Dosa - Plain","itemDesc":"Dosa - Plain","itemPrice":" Rs. 25.00 ","itemComposition":"80 gms + 60 ml Chutney & 80 ml Sambar","isVegetarian":"TRUE","isSpecial":"FALSE"},{"itemName":"Dosa","itemDesc":"Masala/Onion/Rawa/Ragi/Vegetable/Wheat /Neer /GHEE ROST","itemPrice":" Rs. 32.00 ","itemComposition":"150 gms + 80 ml Chutney & 80 ml Sambar","isVegetarian":"TRUE","isSpecial":"FALSE"},{"itemName":"SPL Dosa","itemDesc":"GHEE MASALA/Rava masala","itemPrice":" Rs. 37.00 ","itemComposition":"150 gm + 80 ml Chutney & 80 ml Sambar","isVegetarian":"TRUE","isSpecial":"FALSE"},{"itemName":"Sweet -","itemDesc":"Sweet - Payasam/Jalebi/Ladoo/Gulab Jamun/Mysore Pak/Burfi/etc","itemPrice":" Rs. 10.00 ","itemComposition":"80 ml/35 gms","isVegetarian":"TRUE","isSpecial":"FALSE"},{"itemName":"Veg pulao","itemDesc":"Veg pulao","itemPrice":" Rs. 34.00 ","itemComposition":"250 gms rice +100 gms Raita ","isVegetarian":"TRUE","isSpecial":"FALSE"},{"itemName":"Mini Meal (South)","itemDesc":"Mini Meal (South)","itemPrice":" Rs. 45.00 ","itemComposition":"2 Chapathi+200grmRice +90ml Rasam+90ml Sambhar+90ml veg curry","isVegetarian":"TRUE","isSpecial":"FALSE"},{"itemName":"South Indian MEAL","itemDesc":"VEGETARIAN. MEAL","itemPrice":" Rs. 60.00 ","itemComposition":"2 Chapathi+100grmRice +100grm rice bath+90mlRasam+90grmDry veg preperation+90ml grave veg preperation+90mlSambhar/dal+Curd+Pappad+sweet","isVegetarian":"TRUE","isSpecial":"FALSE"},{"itemName":"NORTH INDIAN VEG. MEAL","itemDesc":"NORTH INDIAN VEG. MEAL","itemPrice":" Rs. 70.00 ","itemComposition":"1 Chapathi+1 Tanduri roti+100 grm biryani +100grm rice+90 ml Rasam+90grm veg dry +90ml curry+90 ml dal+Curd+Pappad+swet","isVegetarian":"TRUE","isSpecial":"FALSE"},{"itemName":"NORTH KARNATAKA MEAL","itemDesc":"PLANTAIAN LEAF MEAL","itemPrice":" Rs. 95.00 ","itemComposition":"JOWA ROTI+ENNAGAI+KALU PALLYA+SOPPU PALLYA+RICE+SAMBAR+BAJJI+KOSAMBARI/CHATNI+BUTTER MILK+CURD+SALAD+SWEET","isVegetarian":"TRUE","isSpecial":"FALSE"}]},{"foodTypeName":"Snacks","foodItemDetails":[{"itemName":"Idly - 2 Nos","itemDesc":"Idly - 2 Nos","itemPrice":" Rs. 20.00 ","itemComposition":"60gms each + 80 ml Chutney & 100 ml Sambar","isVegetarian":"TRUE","isSpecial":"FALSE"},{"itemName":"Idly - vada (1 Idly + I vada)","itemDesc":"(1 Idly + I vada)","itemPrice":" Rs. 25.00 ","itemComposition":"60 gms each piece+ 80 ml Chutney & 100 ml Sambar","isVegetarian":"TRUE","isSpecial":"FALSE"},{"itemName":"Idly - vada (2 Idly + I vada)","itemDesc":"(2 Idly + I vada)","itemPrice":" Rs. 35.00 ","itemComposition":"60 gms each piece+ 80 ml Chutney & 100 ml Sambar","isVegetarian":"TRUE","isSpecial":"FALSE"},{"itemName":"Rava Idly - 2 Nos","itemDesc":"Rava Idly - 2 Nos","itemPrice":" Rs. 32.00 ","itemComposition":"60 gms each + 80 ml Chutney & 100 ml Sambar","isVegetarian":"TRUE","isSpecial":"FALSE"},{"itemName":"Dosa - Plain","itemDesc":"Dosa - Plain","itemPrice":" Rs. 25.00 ","itemComposition":"80 gms + 60 ml Chutney & 80 ml Sambar","isVegetarian":"TRUE","isSpecial":"FALSE"},{"itemName":"Dosa","itemDesc":"Masala/Onion/Rawa/Ragi/Vegetable/Wheat /Neer /GHEE ROST","itemPrice":" Rs. 32.00 ","itemComposition":"150 gms + 80 ml Chutney & 80 ml Sambar","isVegetarian":"TRUE","isSpecial":"FALSE"},{"itemName":"SPL Dosa","itemDesc":"GHEE MASALA/Rava masala","itemPrice":" Rs. 37.00 ","itemComposition":"150 gm + 80 ml Chutney & 80 ml Sambar","isVegetarian":"TRUE","isSpecial":"FALSE"},{"itemName":"Dosa - Set","itemDesc":"3 NO","itemPrice":" Rs. 32.00 ","itemComposition":"60 gms each + 80 ml Chutney & 100 gms SAGU","isVegetarian":"TRUE","isSpecial":"FALSE"},{"itemName":"Uthappam","itemDesc":"Masala/Tomato/Onion/other","itemPrice":" Rs. 32.00 ","itemComposition":"200 gms + 80 ml Chutney & 80 ml SAGU","isVegetarian":"TRUE","isSpecial":"FALSE"},{"itemName":"Vada Single","itemDesc":"Vada","itemPrice":" Rs. 17.00 ","itemComposition":"60GRMS +60 ML CHATNI+80ML SAMBAR","isVegetarian":"TRUE","isSpecial":"TRUE"},{"itemName":"Chow Chow Bath","itemDesc":"Chow Chow Bath","itemPrice":" Rs. 35.00 ","itemComposition":"120 gms each of Khara & 100 gms Kesari + 60 ml Chutney","isVegetarian":"TRUE","isSpecial":"TRUE"},{"itemName":"Khara Bath - Upma","itemDesc":"Khara Bath - Upma","itemPrice":" Rs. 20.00 ","itemComposition":"120 gms + Chutney ","isVegetarian":"TRUE","isSpecial":"FALSE"},{"itemName":"Pongal","itemDesc":"Pongal","itemPrice":" Rs. 30.00 ","itemComposition":"250 gms + 60 ml Chutney + 80 ml Raita ","isVegetarian":"TRUE","isSpecial":"TRUE"}]}]}]},{"foodCourtName":"FoodCourt2","foodCourtDetails":[{"vendorName":"Dolphin","vendorDetails":[{"foodTypeName":"Breakfast","foodItemDetails":[{"itemName":"Masala Chaas","itemDesc":"Spicy butter milk, cold","itemPrice":" Rs. 30.00 ","itemComposition":"320 ml of masala butter milk","isVegetarian":"TRUE","isSpecial":"FALSE"}]},{"foodTypeName":"Lunch","foodItemDetails":[{"itemName":"Masala Chaas","itemDesc":"Spicy butter milk, cold","itemPrice":" Rs. 30.00 ","itemComposition":"320 ml of masala butter milk","isVegetarian":"TRUE","isSpecial":"FALSE"},{"itemName":"Lassi","itemDesc":"Sweet curd","itemPrice":" Rs. 30.00 ","itemComposition":"320 ml of sweet lassi","isVegetarian":"TRUE","isSpecial":"FALSE"},{"itemName":"Amritsari Kheer","itemDesc":"Rice kheer ","itemPrice":" Rs. 30.00 ","itemComposition":"110 ml of Rice Kheer","isVegetarian":"TRUE","isSpecial":"FALSE"},{"itemName":"Cholle paranthas","itemDesc":"Cholle 3 paranthas","itemPrice":" Rs. 80.00 ","itemComposition":"160 grams cholle+ 3 Tandoori paranthas (60 grams Each)+ Raita 85 ml.","isVegetarian":"TRUE","isSpecial":"TRUE"},{"itemName":"cholle kulchas","itemDesc":"cholle stuffed 2 aloo kulchas","itemPrice":" Rs. 80.00 ","itemComposition":"160 grams cholle+ 2 Kulchas (60 grams Each)+ Salad 85 ml+ Imli chutney 80 ml","isVegetarian":"TRUE","isSpecial":"FALSE"},{"itemName":"Cholle rice ","itemDesc":"cholle, Jeera basmathi rice","itemPrice":" Rs. 70.00 ","itemComposition":"160 grams cholle+ 200 grams Basmathi jeera rice+ raita 85 ml","isVegetarian":"TRUE","isSpecial":"FALSE"},{"itemName":"Dal rice","itemDesc":"Dal, basmathi rice","itemPrice":" Rs. 70.00 ","itemComposition":"160 grams Dal+200 grams basmathi rice+ raita 85 ml","isVegetarian":"TRUE","isSpecial":"TRUE"},{"itemName":"Dal paranthas","itemDesc":"Dal, 3 tandoori paranthas","itemPrice":" Rs. 70.00 ","itemComposition":"160 grams dal+ 3 Tandoori paranthas+ 60 grams salad","isVegetarian":"TRUE","isSpecial":"FALSE"},{"itemName":"butter paneer paranthas","itemDesc":"butter paneer gravy, 3 tandoori paranthas","itemPrice":" Rs. 80.00 ","itemComposition":"160 grams butter paneer gravy+ 4 pieces of paneer+ 3 tandoori paranthas+ 60 grams salad","isVegetarian":"TRUE","isSpecial":"FALSE"},{"itemName":"butter paneer rice","itemDesc":"butter paneer gravy, basmathi jeera rice.","itemPrice":" Rs. 80.00 ","itemComposition":"160 grams butter paneer gravy+ 4 pieces of paneer+ 200 grams of basmathi jeera rice+ raita 85 ml","isVegetarian":"TRUE","isSpecial":"FALSE"},{"itemName":"Kadi Pakoda rice","itemDesc":"Kadi pakoda, basmathi jeera rice.","itemPrice":" Rs. 70.00 ","itemComposition":"160 grams Kadi pakoda+200 grams basmathi jeera rice+Raita 85 ml.","isVegetarian":"TRUE","isSpecial":"FALSE"},{"itemName":"Rajma parantha","itemDesc":"Rajma ,3 tandoori paranthas","itemPrice":" Rs. 70.00 ","itemComposition":"160 Rajma+ 3 tandoori paranthas(60 grams each)+60 grams salad","isVegetarian":"TRUE","isSpecial":"TRUE"},{"itemName":"Rajma rice","itemDesc":"Rajma, basmathi jeera rice","itemPrice":" Rs. 70.00 ","itemComposition":"160 grams rajma+200 grams basmathi jeera rice+ raita 85 ml","isVegetarian":"TRUE","isSpecial":"FALSE"},{"itemName":"Butter chicken rice","itemDesc":"Butter chicken, 3 tandoori paranthas","itemPrice":" Rs. 90.00 ","itemComposition":"120 grams chicken+200 grams basmathi jeera rice+ raita 85 ml","isVegetarian":"FALSE","isSpecial":"FALSE"},{"itemName":"Butter chicken paranthas ","itemDesc":"Butter chicken, 3 tandoori paranthas ","itemPrice":" Rs. 90.00 ","itemComposition":"120 grams chicken+ 3 tandoori paranthas (60 grams each)+ 60 grams salad","isVegetarian":"FALSE","isSpecial":"TRUE"},{"itemName":"Chicken Curry paranthas ","itemDesc":"Chicken curry,3 tandoori paranthas","itemPrice":" Rs. 90.00 ","itemComposition":"130 grams chicken+ 3 tandoori paranthas (60 grams each)+ 60 grams salad","isVegetarian":"FALSE","isSpecial":"FALSE"},{"itemName":"Chicken curry rice ","itemDesc":"Chicken curry, basmathi jeers rice.","itemPrice":" Rs. 90.00 ","itemComposition":"130 grams chicken+200 grams basmathi jeera rice+ raita 85 ml","isVegetarian":"FALSE","isSpecial":"FALSE"}]},{"foodTypeName":"Snacks","foodItemDetails":[{"itemName":"Masala Chaas","itemDesc":"Spicy butter milk, cold","itemPrice":" Rs. 30.00 ","itemComposition":"320 ml of masala butter milk","isVegetarian":"TRUE","isSpecial":"FALSE"},{"itemName":"Lassi","itemDesc":"Sweet curd","itemPrice":" Rs. 30.00 ","itemComposition":"320 ml of sweet lassi","isVegetarian":"TRUE","isSpecial":"FALSE"},{"itemName":"Amritsari Kheer","itemDesc":"Rice kheer ","itemPrice":" Rs. 30.00 ","itemComposition":"110 ml of Rice Kheer","isVegetarian":"TRUE","isSpecial":"FALSE"},{"itemName":"Cholle paranthas","itemDesc":"Cholle 3 paranthas","itemPrice":" Rs. 80.00 ","itemComposition":"160 grams cholle+ 3 Tandoori paranthas (60 grams Each)+ Raita 85 ml.","isVegetarian":"TRUE","isSpecial":"TRUE"},{"itemName":"cholle kulchas","itemDesc":"cholle stuffed 2 aloo kulchas","itemPrice":" Rs. 80.00 ","itemComposition":"160 grams cholle+ 2 Kulchas (60 grams Each)+ Salad 85 ml+ Imli chutney 80 ml","isVegetarian":"TRUE","isSpecial":"FALSE"},{"itemName":"Cholle rice ","itemDesc":"cholle, Jeera basmathi rice","itemPrice":" Rs. 70.00 ","itemComposition":"160 grams cholle+ 200 grams Basmathi jeera rice+ raita 85 ml","isVegetarian":"TRUE","isSpecial":"FALSE"},{"itemName":"Chicken Curry paranthas ","itemDesc":"Chicken curry,3 tandoori paranthas","itemPrice":" Rs. 90.00 ","itemComposition":"130 grams chicken+ 3 tandoori paranthas (60 grams each)+ 60 grams salad","isVegetarian":"FALSE","isSpecial":"TRUE"},{"itemName":"Chicken curry rice ","itemDesc":"Chicken curry, basmathi jeers rice.","itemPrice":" Rs. 90.00 ","itemComposition":"130 grams chicken+200 grams basmathi jeera rice+ raita 85 ml","isVegetarian":"FALSE","isSpecial":"FALSE"}]},{"foodTypeName":"Dinner","foodItemDetails":[{"itemName":"Masala Chaas","itemDesc":"Spicy butter milk, cold","itemPrice":" Rs. 30.00 ","itemComposition":"320 ml of masala butter milk","isVegetarian":"TRUE","isSpecial":"FALSE"},{"itemName":"Lassi","itemDesc":"Sweet curd","itemPrice":" Rs. 30.00 ","itemComposition":"320 ml of sweet lassi","isVegetarian":"TRUE","isSpecial":"FALSE"},{"itemName":"Amritsari Kheer","itemDesc":"Rice kheer ","itemPrice":" Rs. 30.00 ","itemComposition":"110 ml of Rice Kheer","isVegetarian":"TRUE","isSpecial":"FALSE"},{"itemName":"Cholle paranthas","itemDesc":"Cholle 3 paranthas","itemPrice":" Rs. 80.00 ","itemComposition":"160 grams cholle+ 3 Tandoori paranthas (60 grams Each)+ Raita 85 ml.","isVegetarian":"TRUE","isSpecial":"TRUE"},{"itemName":"cholle kulchas","itemDesc":"cholle stuffed 2 aloo kulchas","itemPrice":" Rs. 80.00 ","itemComposition":"160 grams cholle+ 2 Kulchas (60 grams Each)+ Salad 85 ml+ Imli chutney 80 ml","isVegetarian":"TRUE","isSpecial":"FALSE"},{"itemName":"Cholle rice ","itemDesc":"cholle, Jeera basmathi rice","itemPrice":" Rs. 70.00 ","itemComposition":"160 grams cholle+ 200 grams Basmathi jeera rice+ raita 85 ml","isVegetarian":"TRUE","isSpecial":"FALSE"},{"itemName":"Dal rice","itemDesc":"Dal, basmathi rice","itemPrice":" Rs. 70.00 ","itemComposition":"160 grams Dal+200 grams basmathi rice+ raita 85 ml","isVegetarian":"TRUE","isSpecial":"TRUE"},{"itemName":"Dal paranthas","itemDesc":"Dal, 3 tandoori paranthas","itemPrice":" Rs. 70.00 ","itemComposition":"160 grams dal+ 3 Tandoori paranthas+ 60 grams salad","isVegetarian":"TRUE","isSpecial":"FALSE"},{"itemName":"butter paneer paranthas","itemDesc":"butter paneer gravy, 3 tandoori paranthas","itemPrice":" Rs. 80.00 ","itemComposition":"160 grams butter paneer gravy+ 4 pieces of paneer+ 3 tandoori paranthas+ 60 grams salad","isVegetarian":"TRUE","isSpecial":"FALSE"},{"itemName":"butter paneer rice","itemDesc":"butter paneer gravy, basmathi jeera rice.","itemPrice":" Rs. 80.00 ","itemComposition":"160 grams butter paneer gravy+ 4 pieces of paneer+ 200 grams of basmathi jeera rice+ raita 85 ml","isVegetarian":"TRUE","isSpecial":"FALSE"},{"itemName":"Kadi Pakoda rice","itemDesc":"Kadi pakoda, basmathi jeera rice.","itemPrice":" Rs. 70.00 ","itemComposition":"160 grams Kadi pakoda+200 grams basmathi jeera rice+Raita 85 ml.","isVegetarian":"TRUE","isSpecial":"FALSE"},{"itemName":"Rajma parantha","itemDesc":"Rajma ,3 tandoori paranthas","itemPrice":" Rs. 70.00 ","itemComposition":"160 Rajma+ 3 tandoori paranthas(60 grams each)+60 grams salad","isVegetarian":"TRUE","isSpecial":"TRUE"},{"itemName":"Rajma rice","itemDesc":"Rajma, basmathi jeera rice","itemPrice":" Rs. 70.00 ","itemComposition":"160 grams rajma+200 grams basmathi jeera rice+ raita 85 ml","isVegetarian":"TRUE","isSpecial":"FALSE"},{"itemName":"Butter chicken rice","itemDesc":"Butter chicken, 3 tandoori paranthas","itemPrice":" Rs. 90.00 ","itemComposition":"120 grams chicken+200 grams basmathi jeera rice+ raita 85 ml","isVegetarian":"FALSE","isSpecial":"FALSE"},{"itemName":"Butter chicken paranthas ","itemDesc":"Butter chicken, 3 tandoori paranthas ","itemPrice":" Rs. 90.00 ","itemComposition":"120 grams chicken+ 3 tandoori paranthas (60 grams each)+ 60 grams salad","isVegetarian":"FALSE","isSpecial":"TRUE"},{"itemName":"Chicken Curry paranthas ","itemDesc":"Chicken curry,3 tandoori paranthas","itemPrice":" Rs. 90.00 ","itemComposition":"130 grams chicken+ 3 tandoori paranthas (60 grams each)+ 60 grams salad","isVegetarian":"FALSE","isSpecial":"FALSE"},{"itemName":"Chicken curry rice ","itemDesc":"Chicken curry, basmathi jeers rice.","itemPrice":" Rs. 90.00 ","itemComposition":"130 grams chicken+200 grams basmathi jeera rice+ raita 85 ml","isVegetarian":"FALSE","isSpecial":"FALSE"}]}]}]},{"foodCourtName":"FoodCourt3","foodCourtDetails":[{"vendorName":"Aathapar","vendorDetails":[{"foodTypeName":"Breakfast","foodItemDetails":[{"itemName":"Masala Chaas","itemDesc":"Spicy butter milk, cold","itemPrice":" Rs. 30.00 ","itemComposition":"320 ml of masala butter milk","isVegetarian":"TRUE","isSpecial":"FALSE"},{"itemName":"Lassi","itemDesc":"Sweet curd","itemPrice":" Rs. 30.00 ","itemComposition":"320 ml of sweet lassi","isVegetarian":"TRUE","isSpecial":"FALSE"},{"itemName":"Amritsari Kheer","itemDesc":"Rice kheer ","itemPrice":" Rs. 30.00 ","itemComposition":"110 ml of Rice Kheer","isVegetarian":"TRUE","isSpecial":"FALSE"},{"itemName":"Cholle paranthas","itemDesc":"Cholle 3 paranthas","itemPrice":" Rs. 80.00 ","itemComposition":"160 grams cholle+ 3 Tandoori paranthas (60 grams Each)+ Raita 85 ml.","isVegetarian":"TRUE","isSpecial":"TRUE"},{"itemName":"cholle kulchas","itemDesc":"cholle stuffed 2 aloo kulchas","itemPrice":" Rs. 80.00 ","itemComposition":"160 grams cholle+ 2 Kulchas (60 grams Each)+ Salad 85 ml+ Imli chutney 80 ml","isVegetarian":"TRUE","isSpecial":"FALSE"},{"itemName":"Cholle rice ","itemDesc":"cholle, Jeera basmathi rice","itemPrice":" Rs. 70.00 ","itemComposition":"160 grams cholle+ 200 grams Basmathi jeera rice+ raita 85 ml","isVegetarian":"TRUE","isSpecial":"FALSE"},{"itemName":"Chicken Curry paranthas ","itemDesc":"Chicken curry,3 tandoori paranthas","itemPrice":" Rs. 90.00 ","itemComposition":"130 grams chicken+ 3 tandoori paranthas (60 grams each)+ 60 grams salad","isVegetarian":"FALSE","isSpecial":"TRUE"},{"itemName":"Chicken curry rice ","itemDesc":"Chicken curry, basmathi jeers rice.","itemPrice":" Rs. 90.00 ","itemComposition":"130 grams chicken+200 grams basmathi jeera rice+ raita 85 ml","isVegetarian":"FALSE","isSpecial":"FALSE"}]},{"foodTypeName":"Lunch","foodItemDetails":[{"itemName":"Chicken curry rice ","itemDesc":"Chicken curry, basmathi jeers rice.","itemPrice":" Rs. 90.00 ","itemComposition":"130 grams chicken+200 grams basmathi jeera rice+ raita 85 ml","isVegetarian":"FALSE","isSpecial":"FALSE"}]},{"foodTypeName":"Snacks","foodItemDetails":[{"itemName":"Masala Chaas","itemDesc":"Spicy butter milk, cold","itemPrice":" Rs. 30.00 ","itemComposition":"320 ml of masala butter milk","isVegetarian":"TRUE","isSpecial":"FALSE"},{"itemName":"Lassi","itemDesc":"Sweet curd","itemPrice":" Rs. 30.00 ","itemComposition":"320 ml of sweet lassi","isVegetarian":"TRUE","isSpecial":"FALSE"},{"itemName":"Amritsari Kheer","itemDesc":"Rice kheer ","itemPrice":" Rs. 30.00 ","itemComposition":"110 ml of Rice Kheer","isVegetarian":"TRUE","isSpecial":"FALSE"},{"itemName":"Cholle paranthas","itemDesc":"Cholle 3 paranthas","itemPrice":" Rs. 80.00 ","itemComposition":"160 grams cholle+ 3 Tandoori paranthas (60 grams Each)+ Raita 85 ml.","isVegetarian":"TRUE","isSpecial":"TRUE"},{"itemName":"cholle kulchas","itemDesc":"cholle stuffed 2 aloo kulchas","itemPrice":" Rs. 80.00 ","itemComposition":"160 grams cholle+ 2 Kulchas (60 grams Each)+ Salad 85 ml+ Imli chutney 80 ml","isVegetarian":"TRUE","isSpecial":"FALSE"},{"itemName":"Cholle rice ","itemDesc":"cholle, Jeera basmathi rice","itemPrice":" Rs. 70.00 ","itemComposition":"160 grams cholle+ 200 grams Basmathi jeera rice+ raita 85 ml","isVegetarian":"TRUE","isSpecial":"FALSE"},{"itemName":"Chicken Curry paranthas ","itemDesc":"Chicken curry,3 tandoori paranthas","itemPrice":" Rs. 90.00 ","itemComposition":"130 grams chicken+ 3 tandoori paranthas (60 grams each)+ 60 grams salad","isVegetarian":"FALSE","isSpecial":"TRUE"},{"itemName":"Chicken curry rice ","itemDesc":"Chicken curry, basmathi jeers rice.","itemPrice":" Rs. 90.00 ","itemComposition":"130 grams chicken+200 grams basmathi jeera rice+ raita 85 ml","isVegetarian":"FALSE","isSpecial":"FALSE"}]},{"foodTypeName":"Dinner","foodItemDetails":[{"itemName":"Masala Chaas","itemDesc":"Spicy butter milk, cold","itemPrice":" Rs. 30.00 ","itemComposition":"320 ml of masala butter milk","isVegetarian":"TRUE","isSpecial":"FALSE"},{"itemName":"Chicken Curry paranthas ","itemDesc":"Chicken curry,3 tandoori paranthas","itemPrice":" Rs. 90.00 ","itemComposition":"130 grams chicken+ 3 tandoori paranthas (60 grams each)+ 60 grams salad","isVegetarian":"FALSE","isSpecial":"FALSE"},{"itemName":"Chicken curry rice ","itemDesc":"Chicken curry, basmathi jeers rice.","itemPrice":" Rs. 90.00 ","itemComposition":"130 grams chicken+200 grams basmathi jeera rice+ raita 85 ml","isVegetarian":"FALSE","isSpecial":"FALSE"}]}]},{"vendorName":"Tadka Singh","vendorDetails":[{"foodTypeName":"Breakfast","foodItemDetails":[{"itemName":"Masala Chaas","itemDesc":"Spicy butter milk, cold","itemPrice":" Rs. 30.00 ","itemComposition":"320 ml of masala butter milk","isVegetarian":"TRUE","isSpecial":"FALSE"},{"itemName":"Lassi","itemDesc":"Sweet curd","itemPrice":" Rs. 30.00 ","itemComposition":"320 ml of sweet lassi","isVegetarian":"TRUE","isSpecial":"FALSE"},{"itemName":"Amritsari Kheer","itemDesc":"Rice kheer ","itemPrice":" Rs. 30.00 ","itemComposition":"110 ml of Rice Kheer","isVegetarian":"TRUE","isSpecial":"TRUE"},{"itemName":"Cholle paranthas","itemDesc":"Cholle 3 paranthas","itemPrice":" Rs. 80.00 ","itemComposition":"160 grams cholle+ 3 Tandoori paranthas (60 grams Each)+ Raita 85 ml.","isVegetarian":"TRUE","isSpecial":"FALSE"},{"itemName":"cholle kulchas","itemDesc":"cholle stuffed 2 aloo kulchas","itemPrice":" Rs. 80.00 ","itemComposition":"160 grams cholle+ 2 Kulchas (60 grams Each)+ Salad 85 ml+ Imli chutney 80 ml","isVegetarian":"TRUE","isSpecial":"FALSE"},{"itemName":"Cholle rice ","itemDesc":"cholle, Jeera basmathi rice","itemPrice":" Rs. 70.00 ","itemComposition":"160 grams cholle+ 200 grams Basmathi jeera rice+ raita 85 ml","isVegetarian":"TRUE","isSpecial":"FALSE"},{"itemName":"Chicken Curry paranthas ","itemDesc":"Chicken curry,3 tandoori paranthas","itemPrice":" Rs. 90.00 ","itemComposition":"130 grams chicken+ 3 tandoori paranthas (60 grams each)+ 60 grams salad","isVegetarian":"FALSE","isSpecial":"FALSE"},{"itemName":"Chicken curry rice ","itemDesc":"Chicken curry, basmathi jeers rice.","itemPrice":" Rs. 90.00 ","itemComposition":"130 grams chicken+200 grams basmathi jeera rice+ raita 85 ml","isVegetarian":"FALSE","isSpecial":"FALSE"}]},{"foodTypeName":"Lunch","foodItemDetails":[{"itemName":"Masala Chaas","itemDesc":"Spicy butter milk, cold","itemPrice":" Rs. 30.00 ","itemComposition":"320 ml of masala butter milk","isVegetarian":"TRUE","isSpecial":"FALSE"},{"itemName":"Lassi","itemDesc":"Sweet curd","itemPrice":" Rs. 30.00 ","itemComposition":"320 ml of sweet lassi","isVegetarian":"TRUE","isSpecial":"FALSE"}]}]}]}]'; 

var app = angular.module('fcApp', []); 
app.controller('fcController', function ($scope) { 
$scope.fcMenu = eval('(' + fcJSON + ')'); 
}); 

我應該如何應用一個過濾器,這樣我應該能夠在所有的項目應用過濾器在列表中(即itemname,foodtype,vendor,foodcourt和price?

在此先感謝

+0

我希望類似下面可以幫助你解決你的問題。 http://stackoverflow.com/questions/13216115/filtering-by-multiple-specific-model-properties-in-angularjs-in-or-relationship –

+0

那麼,你想顯示所有的供應商,fooditems等在美食廣場如果搜索文字與食品場相匹配?我認爲這將需要一個自定義過濾器,遞歸地檢查每個對象。當我有機會時,我會嘗試寫一個示例 – Beartums

+0

@Beartums是,如果搜索與列表中的任何itemName/foodTypeName/vendorName/foodCourtName/itemPrice相匹配,則相應的項目只應在過濾器後填充到列表中。 任何好的文章,將幫助我創建一個自定義過濾器? – Manju

回答

1

創建自定義過濾如下「myfilter」的: 的jsfiddle鏈接參考 - https://jsfiddle.net/bz5zon4L/#

<div ng-controller="fcController"> 
    <div class="control"> 
     <input type="search" ng-model="txtSearch" placeholder="search here" /> 
    </div> 
    <div id="menu"> 
     <div ng-repeat="foodCourt in fcMenu"> 

     <div ng-repeat="vendor in foodCourt.foodCourtDetails"> 

      <div ng-repeat="foodType in vendor.vendorDetails"> 
      <div class="foodItem" ng-repeat="foodDetails in foodType.foodItemDetails | myFilter:txtSearch:foodType:vendor:foodCourt"> 
       <div>{{foodDetails.itemName}} - {{foodType.foodTypeName}}</div> 
       <div>{{vendor.vendorName}} - {{foodCourt.foodCourtName}}</div> 
       <div>{{foodDetails.itemPrice}}</div> 
      </div> 
      </div> 
     </div> 
     </div> 
    </div> 
</div> 

app.filter('myFilter', function() { 
    return function(item, textSearch, foodType, vendor, foodCourt) { 
     var result = []; 
     if (textSearch && item && foodType && vendor && foodCourt) { 
      for (var i = 0; i < item.length; i++) { 
       var tempSearch = item[i].itemName + foodType.foodTypeName + vendor.vendorName + foodCourt.foodCourtName + item[i].itemPrice; 
       if (tempSearch) { 
        var searchIndex = tempSearch.toLowerCase().search(textSearch.toLowerCase()); 
        if (searchIndex >= 0) { 
         result.push(item[i]); 
         tempSearch = ''; 
        } 
       } 
      } 
      return result; 
     } 
     return item; 
    } 
}); 
+0

感謝您的回覆。我有點想知道在函數(item,textSearch,foodType,vendor,foodcourt)之前使用'return'關鍵字的概念是什麼。我想你已經用完了。我只是想了解什麼時候應該在回調函數中返回函數。這是一種在函數內觸發函數的方法嗎?你能幫助我理解這個概念嗎? – Manju

3

對於首先,你有你的分層數據轉換成平面數據 像:

{"foodCourtName":"FoodCourt1","vendorName":"Adigas","foodTypeName":"Breakfast",..} 

你可以做,在JS,如:

var flatData=[]; 

    for (var i = 0; i < fcJSON.length; i++) { 

    var flatDataObj=new Object(); 

    flatDataObj.foodCourtName=fcJSON.foodCourtName; 

    if (fcJSON[i].foodCourtDetails) { 

    flatDataObj.vendorName=fcJSON[i].foodCourtDetails.vendorName; 

    } 

    if (fcJSON[i].foodCourtDetails.vendorDetails) { 

    flatDataObj.foodTypeName=fcJSON[i].foodCourtDetails.vendorDetails.foodTypeName; 

    } 

    //nd so on.... 

    flatData.push(flatDataObj); 
    } 

現在您可以使用Angular提供過濾器和過濾器數據filter

0

有很多很好的指針和答案here.There可能是另一種方式來實現你與添加advantage.As你可以看到有提出兩種解決方案的願望,

  • 添加自定義過濾器
  • 拼合您的數據

這些解決方案的替代方案可以通過對UI進行一些更改來實現。您可以讓用戶使用多個搜索框[每個關卡一個]優化其數據搜索,或讓他們使用下拉列表選擇要搜索的類別。

<div ng-repeat="foodCourt in fcMenu | filter:foodCourtSearch"> 
    <div ng-repeat="vendor in foodCourt.foodCourtDetails | filter:vendorSearch"> 
     <div ng-repeat="foodType in vendor.vendorDetails"> 
     <div class="foodItem" ng-repeat="foodDetails in foodType.foodItemDetails | filter:foodItemSearch"> 

Plunker Demo for multiple search boxes

單個全框可能是您的要求,但這是解決problem.Having多個搜索框將幫助用戶優化其搜索(例如是否午餐是在foodcourt1提供一種方式)不能用單個搜索框完成。

P.S:重要使用EVAL是不是一個好的做法,使用angular.fromJson(fcJSON);代替。