2016-09-18 27 views
2

我非常喜歡角JS。Angular JS中的嵌套列表 - 不知道如何去做

我創建一個簡單的Web應用程序來學習角JS。

我有一個包含各種植物的主要列表。例如,水果,蔬菜等..從MySQL數據庫中獲取這些數據我正在使用PHP腳本。

當使用點擊一個類別時,我需要展開一個包含該類別植物名稱的列表。例如,如果用戶點擊「水果」,它將展開一個包含「芒果」,「蘋果」,「香蕉」等的列表。這也由PHP腳本完成。對於我需要通過類別ID作爲URL參數的腳本

EG。 select_category.php?CAT_ID = 1名

最後名單應該像遵循

  • 水果

    • 芒果
    • 香蕉
    • 蘋果
  • 蔬菜
  • 草本植物

下面顯示了我正在使用的HTML/JS頁面。

<html> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
    <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script> 
    <meta charset="utf-8"> 
    <meta name="viewport" content="width=device-width, initial-scale=1"> 
    <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 
    <script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> 
</head> 
<title>Test Display</title> 
<body> 
    <div ng-app="cat_display" ng-controller="customersCtrl"> 
     <div ng-repeat="x in plant_cat"> 
     <button value={{x.cat_id}} type="button" class="btn btn-primary btn-lg btn-block" ng-click="get_plants(x.cat_id)">{{x.cat_name}}</button> </br> 
      <ul class="list-group"> 
       <li class="list-group-item" ng-repeat="y in plant_cat.plant">{{y.plant_name}}</li> 
      </ul> 
     </div> 
    </div>  
</body> 


<script> 
    var app= angular.module('cat_display',[]); 
    var get_all_plant_cats = function($scope,$http) 
    { 
     //get plat categories 
     $http.get("http://localhost:8080/Aggry/select_plant_categories.php") 
      .then(function(response){ 
      $scope.plant_cat = response.data.records; 
     }); 
     //get plants 
     $scope.get_plants = function(cat_id) 
     { 
      $http.get("http://localhost:8080/Aggry/select_plant.php?cat_id="+cat_id) 
      .then(function(response){ 
       $scope.plant_cat.plant = response.data.records;     
      }); 
     } 
    }; 

    app.controller('customersCtrl',get_all_plant_cats); 
</script> 

但這不是按預期工作。

當我點擊一個類別時,它展開所有列表。

我已經嘗試了所有堆棧溢出中的所有示例。我沒有任何運氣,因爲我的情況完全不同。在我的情況下,我需要發送一個參數到PHP腳本來選擇必要的數據。

請幫我弄清楚這一點。

這是通過select_plant_cat.PHP產生的JSON(選擇*植物類別)

{"records":[{"cat_id":"1","cat_name":"විසිතුරු මල්"},{"cat_id":"2","cat_name":"ඖෂධිය පැල"},{"cat_id":"3","cat_name":"පලතුරු පැල"},{"cat_id":"4","cat_name":"එළවලු පැල"}]} 

這是通過產生的JSON select_plant.PHP?CAT_ID = 1(選擇*植物,其中CAT_ID = 1)

{"records":[{"plant_id":"1","plant_min_price":"300.00","plant_max_price":"","plant_short_description":"පඳුරු ගැටපිච්ච මල් සහිතව බන්දුන්ගතාකළ පැල","plant_description":"සුදු පැහැති මල් සහිත මධ්‍යම ප්‍රමාණයේ ගැට පිච්ච පැල කොම්පෝස්ට් පොහොර යොදා බඳුන් ගතකර ඇත.බිම සිටුවීමට හෝ බන්දුනේම තබා ගැනීමට උචිතය","plant_image_url":"https://s-media-cache-ak0.pinimg.com/736x/2e/38/ce/2e38ce89db5e470c8e6e527738fd18a5.jpg","plant_availability":"true","plant_name":"ගැට පිච්ච"},{"plant_id":"2","plant_min_price":"500.00","plant_max_price":"750.00","plant_short_description":"බඳුන් ගත කරන ලද රතු,කහ සහ සුදු අරලිය පැල","plant_description":"කොම්පෝස්ට් යොදා බඳුන් ගත කර ඇත. බන්දුනෙම තබා ගැනීමට වඩාත් සුදුසුය.","plant_image_url":"https://c1.staticflickr.com/5/4068/4258135709_d18a001c5b_o.jpg","plant_availability":"false","plant_name":"බේබි අරලිය"}]} 

謝謝。

+0

它是將所有植物的種類或者是添加1種植物類型適用於所有類別? –

+0

當您選擇一個類別時,它會列出該類別下可用的所有植物 – Sandaru

+0

是的,但是您說:「當我點擊一個類別時,它會擴展所有列表。」這可能有多種原因 –

回答

2

你在重複陣列中的陣列中的一個想重複這樣的代碼必須是:

<body> 
    <div ng-app="cat_display" ng-controller="customersCtrl"> 
     <div ng-repeat="x in plant_cat"> 
     <button value={{x.cat_id}} type="button" class="btn btn-primary btn-lg btn-block" ng-click="get_plants(x.cat_id)">{{x.cat_name}}</button> </br> 
      <ul class="list-group"> 
       <li class="list-group-item" ng-repeat="y in x.plant">{{y.plant_name}}</li> 
      </ul> 
     </div> 
    </div>  
</body> 

通知第二重是y in x.plant

+0

我已經改變了它..以及JS腳本如下$ scope.get_plants = function(cat_id) { alert(cat_id); (函數(響應)){alert(response.data.records); $ scope。(http:// localhost:8080/Aggry/select_plant.php?cat_id =「+ cat_id) 。 x.plant = response.data.records; }); }但它不工作:( – Sandaru

+0

它說「angular.js:12520TypeError:當我檢查控制檯時無法設置屬性'工廠'的未定義」 – Sandaru

+0

因爲'$ scope.x'不存在 –