绑定断点与嵌套的ng Include

时间:2013-10-24 06:20:51

标签: angularjs angularjs-ng-repeat

我有可能有子任务的任务列表等等。这是嵌套结构,我不想加载整个树,我只想加载根级别,然后按用户需求加载每个分支。所以我正在使用嵌套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

的插件

1 个答案:

答案 0 :(得分:0)

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

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

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

//For each subtask item from server result

//task.subtasks.push(subtask);