2016-01-01 3 views
0

Я пытаюсь реализовать угловую данные-неопределенные-checkbox директива в моем приложении по приведенной ниже ссылке.Угловая неопределенная галочка директива ng-change issue

Example Fiddle

Я добавил нг-изменение как для родителя и детей флажков (то же событие), который обновляет столбцы в таблице ниже. Проблема заключается в том, когда я проверяю/снимаю флажки с дочерними флажками, столбцы появляются и исчезают нормально, и это работает нормально, но когда я нажимаю флажок «Выбрать все», действие инвертируется. То есть, когда выбран флажок all, все столбцы скрыты, а при снятии флажка отображаются все столбцы.

В фрагменте коды для директивы от соединения скрипки упомянутого выше, в остальном части, если я изменю modelCtrl.$setViewValue(hasChecked); к modelCtrl.$setViewValue(true);, как показан в коде ниже, часть работы снимите флажок, то есть когда флажок «Select All», все столбцы скрыты, но когда я его проверю, ничего не происходит, и он не переходит на событие 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

Спасибо за ваш ответ. Проблема заключается не в выборе всех флажков с помощью Select All, а в событии ** ng-change **, которое я добавил в Select All. Когда я проверяю, чтобы выбрать все, столбцы в таблице, которые я пытаюсь обновить в моем коде, исчезают, что должно произойти, если выбрать все непроверено. Таким образом, поведение события противоположное. Это имеет смысл сейчас? –

ответ

0

Решил его, поставив условие на событие изменения ng флажков. Вот фрагмент - (как на примере скрипки):

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

Но, пожалуйста, не стесняйтесь комментировать, если есть лучший ответ на этот вопрос. Спасибо!

Смежные вопросы