2013-10-24 34 views
0

我有任務列表中可能有子任務等。這是嵌套結構,我不想加載整個樹,我只想加載根級別,然後按用戶需求加載每個分支。所以我使用嵌套ng-includesng-init通過TAKS的列表,這裏是模板:綁定中斷與嵌套ngInclude

<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

回答

0

我不熟悉的咖啡腳本。但是你的問題在於,你指定的ng-init task=task.subtasks不起作用,因爲在ng-init期間,由於異步遠程調用,task.subTasks未定義。

解決此問題的一種方法是當您獲取任務數據將每個子任務數組設置爲空[]

然後當你得到子任務數據填充這個數組而不是重新分配。如

//For each subtask item from server result 

//task.subtasks.push(subtask); 
+0

這裏是我測試你的猜測http://plnkr.co/edit/jUSli6m1uz63BJj7Rom3但這沒有幫助。我認爲'task.subtasks'未定義的事實不是問題,$ scope.tasks在某些時候也是未定義的,但這不會導致問題... – SET

+0

如果您查看生成的html,正在生成孩子,但它們是隱藏的。 – Chandermani

+0

確實,對不起,我的錯。 Thanx,它確實有效 – SET