0

我有可能有子任务等的任务列表。这是嵌套结构,我不想加载整个树,我只想加载根级别,然后根据用户需求加载每个分支。所以我使用嵌套ng-includesng-init传递任务列表,这是模板:

<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

4

1 回答 1

0

我不熟悉咖啡脚本。但是您遇到的问题是,您分配的 ng-inittask=task.subtasks不起作用,因为在您的 ng-init 期间,由于异步远程调用,task.subTasks 未定义。

解决此问题的一种方法是当您将每个子任务数组的任务数据集设置为空时[]

然后当你得到 subTasks 数据时填充这个数组而不是重新分配。如

//For each subtask item from server result

//task.subtasks.push(subtask);
于 2013-10-24T07:20:39.910 回答