2016-09-18 2 views
2

Я чрезвычайно newbe для углового JS.Вложенный список в Угловой JS - Cant выяснить, как это сделать

Im создание простого веб-приложения для изучения угловых JS.

У меня есть основной список, который содержит различные категории растений. Например, фрукты, овощи и т. Д., Чтобы получить эти данные из базы данных MySQL. Я использую PHP-скрипт.

При использовании кликов по категории мне нужно развернуть список, содержащий названия растений этой категории. Например, если пользователь нажимает «Фрукты», он расширяет список, содержащий «Манго», «Яблоко», «Банана» и т. Д. Это также выполняется с помощью PHP-скрипта. Для сценария мне нужно передать идентификатор категории в качестве параметра URL

EG. select_category.php? cat_id = 1

Окончательный список должен быть как следовать

  • Фрукты

    • Манго
    • Banana
    • Яблоко
  • Овощи
  • herbals

После этого отображается страница 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 для выбора необходимых данных.

Пожалуйста, помогите мне разобраться в этом.

Это JSON, который генерируется select_plant_cat.PHP (Select * завод категории)

{"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); $ http.get ("http: // localhost: 8080/Aggry/select_plant.php? Cat_id =" + cat_id) . Then (function (response) { alert (response.data.records); $ scope. x.plant = response.data.records; }); } но его не работает :( – Sandaru

+0

В нем говорится: «angular.js: 12520TypeError: не удается установить свойство« растение »неопределенного», когда я проверяю консоль – Sandaru

+0

Поскольку '$ scope.x' не существует –

Смежные вопросы