Как я могу сделать дерево с угловым JS и JSON

Мои вопросы могут быть очень легкими для вас, но я новичок в angular.js.

Вот мой JSON:

[{
"Priority": 0,                               //Queue
"Task": "Optimizer",
"Valid": 1,
"Enabled": 1,
"Id": 2,
"Description": "Low",
"Name": "velo",
"Level": 0
},
{
"Priority": 0,                              // Queue
"Task": "Optimizer",
"Valid": -4,
"Enabled": 1,
"Id": 11,
"Description": "",
"Name": "CMYKOptimizer_Queue_1",
"Level": 0 
}, 
{
"Expanded": false,                         //Group1 of queue
"Id": "P3",
"Name": "group",
"Level": 0
},  
{
"Expanded": false,                         //Group2 of queue
"Parent": "P3",
"Id": "P4",
"Name": "Sub",
"Level": 1
},
{
"Priority": 1,                             // child of group2
"Task": "Optimizer",
"Valid": -4,
"Enabled": 1,
"Parent": "P4",
"Id": 4,
"Description": "high",
"Name": "High",
"Level": 2
}, 
{
"Priority": 0,                           //child of group1
"Task": "Optimizer",
"Valid": -4,
"Enabled": 0,
"Parent": "P3",
"Id": 7,
"Description": "EZRF",
"Name": "Sametiuogr",
"Level": 2
  },
]

Как видите, он не очень подходит для моей цели.

Итак, у меня есть таблица, в которой отображаются все очереди подряд.

 <tr ng-repeat="queue in QueuesController.queues" data-depth="{{queue.Level}}" id="{{queue.Id}}" parent="{{queue.Parent}}">
                    <div  ng-hide="{{queue.Level }}">
                        <td ng-hide="{{queue.Expanded  == true}} || {{queue.Expanded == false}}">

                            <p style="padding-left : {{queue.Level * 20 }}px;" ng-model="queue.Name">{{queue.Name + ' ' + queue.Id}}</p>
                        </td>
                        <td ng-show="{{queue.Expanded  == true}} || {{queue.Expanded == false}}" colspan="5">
                            <span ng-show="!angular.isUndefined({{queue.Expanded}})" style="padding-left : {{queue.Level* 20}}px;">
                                <span ng-show=" {{queue.Expanded == false}} "  class="glyphicon glyphicon-circle-arrow-right"></span>
                                <span ng-show=" {{queue.Expanded == true}} " class="glyphicon glyphicon-circle-arrow-down"></span>
                            </span>
                            {{queue.Name + ' ' + queue.Id}}
                        </td>
                        <td class="text-center" ng-hide="('{{queue.Expanded}}') == 'true'  || ('{{queue.Expanded}}') == 'false'">
                            <select style="height: 100%;width: 100%;" onclick="stopRefresh()">
                                <option value="-1" ng-selected="{{queue.Priority == -1}}" >Low</option>
                                <option value="0" ng-selected="{{queue.Priority  == 0}}" >Normal</option>
                                <option value="1" ng-selected="{{queue.Priority == 1}}" >High</option>
                                <option value="2" ng-selected="{{queue.Priority == 2}}" >Very High</option>
                            </select>
                        </td>
                        <td class="text-center" ng-hide="('{{queue.Expanded}}') == 'true'  || ('{{queue.Expanded}}') == 'false'" ><input type="checkbox" ng-checked="{{queue.Enabled}}"  name="checkbox" style="height: 100%;width: 100%;"></td>
                        <td class="text-center" ng-hide="('{{queue.Expanded}}') == 'true'  || ('{{queue.Expanded}}') == 'false'" >
                            <div ng-hide="('{{queue.Expanded}}') == 'true'  || ('{{queue.Expanded}}') == 'false'">
                                <span  ng-show="{{queue.Valid == 0}}" class="glyphicon glyphicon-question-sign queuesign orange"></span>
                                <span  ng-show="{{queue.Valid == 1}}" class="glyphicon glyphicon-ok-sign queuesign green"></span>
                                <span  ng-show="{{queue.Valid < 0 }}"  class="glyphicon glyphicon-remove-sign queuesign red" ></span>
                            </div>
                        </td>
                        <td ng-hide="{{queue.Expanded  == true}} || {{queue.Expanded == false}}">{{queue.Description}}</td>
                    </div>
                </tr>

И это мой контроллер, где я просто получаю и сохраняю свой JSON в store.queues:

app.controller('QCtrl',['$http','$interval','$scope', function($http, $interval,$scope){
    this.queues = queue;
    var store = this;
    store.queues = [];
    var queue = [];


$http.get('/queue/info').success(function(data) {
    store.queues = data;
    });
}]);

У меня вопрос: как я могу заставить мою дочернюю очередь появляться и исчезать, когда я нажимаю на родительскую строку? Надеюсь, мне все ясно. Спасибо

0 ответов

Другие вопросы по тегам