2013-10-24 4 views
0

У меня есть список задач, которые могут иметь подзадачи и т. Д. Это вложенная структура, и я не хочу загружать целые деревья, я хочу загрузить только корневой уровень, а затем загружать каждую ветвь по требованию пользователей. Поэтому я использую вложенности ng-includes и ng-init передать список TAKS и вот шаблон:Связывание перерывов с вложенным ngInclude

<div ng-repeat="task in tasks" class="task"> 
    {{task.name}} 
    <a href ng-click="expand(task)">expand</a> 
    <a href ng-click="remove(task, tasks)">remove</a> 
    <div ng-show="task.subtasks" ng-init="tasks = task.subtasks" ng-include="'tasks.html'"></div> 
</div> 

Контроллер:

app.controller 'MainCtrl', ($scope, $http) -> 
    $http.get('tasks.json').then (tasks) -> 
    $scope.tasks = tasks.data 

    $scope.expand = (task) -> 
    if !task.subtasks 
     $http.get("subtasks.json").then (tasks) -> 
     task.subtasks = tasks.data 
    task.expanded = yes 

    $scope.remove = (task, list) -> 
    list = _.reject list, id:task.id 

Когда пользователь расширить ветку и подзадач загружался, он не обновления, поэтому я предполагаю, что ng-include создаст новую область для детей. Как я могу справиться с этой проблемой?

Вот шлепнуть для этого http://plnkr.co/edit/AkIZV1PkD5a3AzCBen8R

ответ

0

Я не являюсь сведущим с кофе сценария. Но проблема в том, что ng-init, где вы назначаете task=task.subtasks, не работает, потому что во время ng-init задача .subTasks не определена из-за удаленного вызова async.

Один из способов исправить это будет, когда вы получите данные задачи, чтобы каждый из массивов подзадач пустым [].

Затем, когда вы получаете данные подзадач, заполните этот массив, а не переназначайте. Такие, как

//For each subtask item from server result 

//task.subtasks.push(subtask); 
+0

Вот шлепнуть, где я проверил ваше предположение http://plnkr.co/edit/jUSli6m1uz63BJj7Rom3, но это не помогает. Я думаю, что факт, что 'task.subtasks' не определен, не является проблемой, $ scope.tasks также не определен в какой-то момент, но это не приводит к проблемам ... – SET

+0

Если вы посмотрите на сгенерированный html в, , но они скрыты. – Chandermani

+0

Действительно, извините, моя вина. Thanx, он работает – SET

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