0

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

これは、このhttp://plnkr.co/edit/AkIZV1PkD5a3AzCBen8Rのプランクです。

4

1 に答える 1

0

私はコーヒーのスクリプトに精通していません。しかし、あなたが抱えている問題はtask=task.subtasks、非同期リモート呼び出しのために ng-init 中に task.subTasks が定義されていないため、割り当てた ng-init が機能しないことです。

これを修正する 1 つの方法は、各サブタスク配列を空に設定したタスク データを取得する場合です[]

次に、subTask データを取得すると、再割り当てではなく、この配列に入力します。そのような

//For each subtask item from server result

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