サブタスクなどを持つ可能性のあるタスクのリストがあります。これはネストされた構造であり、ツリー全体をロードするのではなく、ルート レベルのみをロードしてから、ユーザーの要求に応じて各ブランチをロードします。だから私はネスティングを使用して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 が新しい子スコープを作成すると仮定します。どうすればこの問題を処理できますか?