2016-01-01 29 views
0

我正試圖從下面的鏈接在我的應用程序中實現角度爲數據不確定複選框指令。角度不確定複選框指令ng-change問​​題

Example Fiddle

我已經加入NG-變化給家長和孩子們的複選框(相同的事件),它更新了一個表中的列都。問題是,當我檢查/取消選中子複選框時,列出現並消失良好,並且工作正常,但是當我單擊全選複選框時,操作會反轉。也就是說,當select all被選中時,所有列都隱藏起來,當未選中時,所有列都是可見的。

在片段從上述撥弄鏈接,在其他部分,如果我改變了modelCtrl.$setViewValue(hasChecked);modelCtrl.$setViewValue(true);,如圖碼以下時,取消選中的部分作品,即當我取消「全選」的指令,所有的列都隱藏起來,但是當我檢查它時,沒有任何反應,它不會去ng-change事件。任何幫助深表感謝。

在預先感謝和2016年新年快樂!

// Determine which state to put the checkbox in 

if (hasChecked && hasUnchecked) { 
    element.prop('checked', false); 
    element.prop('indeterminate', true); 
    if (modelCtrl) { 
     modelCtrl.$setViewValue(false); 
    } 
} else { 
    element.prop('checked', hasChecked); 
    element.prop('indeterminate', false); 
    if (modelCtrl) { 
     modelCtrl.$setViewValue(true); 
    } 
} 
+0

我設置了'modelCtrl。$ setViewValue(true);'並且在行爲中看不到錯誤。複選框將取消選中,然後單擊全選再次選擇所有相關複選框。你能否詳細說明一下? – Boris

+0

感謝您的回覆。問題不在於使用「全選」選擇所有複選框,而是添加到「全選」的** ng-change **事件。當我檢查選擇所有,我想在我的代碼中刷新表中的列消失,這應該發生在選擇全部未選中時。所以事件行爲是相反的。現在有道理嗎? –

回答

0

通過在複選框的ng-change事件中添加一個條件來解決它。這裏是片段 - (按照例如小提琴):

if(!$scope.model.people[0].allEaten){ 
    $timeout(function(){ 
     updateModel(); 
     refreshColumns(); 
    },2000); 
} else { 
    $timeout(function(){ 
     refreshColumns(); 
    },2000); 
} 

但請隨意評論,如果有一個更好的答案。 謝謝!