2016-06-23 5 views
0

Я хочу показать вложенный список в моем странице использованияКонтактных нг-повторе и объекте JSON, который не вложен <pre><br></pre> HTML-кодпечати вложен список из JSON, не вложен нг-повтор

<div ng-app="myApp" ng-controller="controller"> 
    <ul ng-init="categories();"> 
     <li ng-repeat="cat in categories"> 
      {{cat.cat_name}}    
      <ul ng-show="cat[0]"> 
       <li ng-repeat="subCat in cat[0]"> 
        {{subCat.cat_name}} 
       </li> 
      </ul> 
     </li> 
    </ul> 
</div> 

углового код

var app = angular.module('myApp', []); 
app.controller('controller', function($scope, $http) { 
$scope.categories = function(){ 
    $http({ 
     method: 'post', 
     url: 'ajax.php', 
     data: $.param({'type' : 'selectCategories'}), 
     headers: {'Content-Type': 'application/x-www-form-urlencoded'} 
    }) 
    .success(function(data){ 
     console.log(data); 
     $scope.categories = data; 
    }) 
    .error(function() { 
     $scope.data = "error in fetching data"; 
    }); 
}} 

ajax.php

if(isset($_POST['type']) && !empty(isset($_POST['type']))){ 
    $type = $_POST['type'];  
    switch ($type) { 
     case 'selectCategories': 
      print json_encode($database->select("categories", "*"));//use medoo (The lightest PHP database framework) 
      break; 
    } 
} 

результат ajax.php страницы является

[Object { cat_id="1", cat_name="a", cat_parent="0"},Object { cat_id="2", cat_name="aa", cat_parent="1"},Object { cat_id="4", cat_name="b", cat_parent="0"},Object { cat_id="5", cat_name="bb", cat_parent="4"},Object { cat_id="3", cat_name="ab", cat_parent="1"}] 

Я хочу показать список Как ниже

    • аа
    • аб
  • б
    • бб
+0

может у вас распечатать результат ** console.log (данные) ** на sucess –

+0

Результат страницы ajax.php не является допустимым объектом json. Я бы предложил сначала преобразовать его в json. –

+0

это результат console.log (data) с firebug '[Object {cat_id =" 1 ", cat_name =" a ", cat_parent =" 0 ", more ...}, Object {cat_id =" 2 ", cat_name = "aa", cat_parent = "1", more ...}, Object {cat_id = "3", cat_name = "b", cat_parent = "0", more ...}] ' – ahad

ответ

0

вы можете использовать библиотеку lodash для достижения этой цели. https://lodash.com/

в функции успеха:

// this is your data 
var data = [ { cat_id:1, cat_name:"a", cat_parent:0}, { cat_id:2, cat_name:"aa", cat_parent:1}, { cat_id:4, cat_name:"b", cat_parent:0}, { cat_id:5, cat_name:"bb", cat_parent:4}, { cat_id:3, cat_name:"ab", cat_parent:1}]; 


$scope.list = []; 

var i = 0 ; 
while($scope.list.length<=0){ 
    // gets the first 2 items in the tree 
    $scope.list = _.filter(data, ['cat_parent', i]); 

    if ($scope.list.length>0) { 
     for (var i = 0; i < $scope.list.length; i++) { 
      $scope.list[i].list = _.filter(data,['cat_parent', list[i].cat_id]); 
     } 
    } 
    i++; 
} 

console.log($scope.list); 

Это работает только для 2-х уровней в дереве категорий, но я думаю, что это хорошее начало, чтобы начать с. :)

Cheers!

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