我有可能有子任务的任务列表等等。这是嵌套结构,我不想加载整个树,我只想加载根级别,然后按用户需求加载每个分支。所以我正在使用嵌套ng-includes
和ng-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创建新的子范围。我该如何处理这个问题?
的插件答案 0 :(得分:0)
我不熟悉咖啡脚本。但是你遇到的问题是,你分配task=task.subtasks
的ng-init不起作用,因为在你的ng-init期间,由于异步远程调用,task.subTasks是未定义的。
解决此问题的一种方法是,当您获取任务数据时,将每个子任务数组设置为空[]
。
然后当你获得subTasks数据时填充这个数组而不是重新分配。如
//For each subtask item from server result
//task.subtasks.push(subtask);