Я создаю проект управления данными CRUD с использованием Angular и директивы dirPagination и должен иметь флажок «Выбрать все», который выбирает все строки, видимые/без/с помощью jQuery.AngularJS dirPagination Выбрать все видимые строки
Я начал с этого - примечание - я поднимаюсь по кривой углового обучения, и я знаю, что некоторые из них могут быть не «угловым», но я также не хочу начинать возиться (без каламбуров) с кишки dirPagination, Ergo директиву dirPagination:
<tr dir-paginate-start="item in items|filter:filterFunction()|orderBy:sortPredicate:reverse| itemsPerPage: rowsPerPage">
и отдельные строки-флажок
<input type="checkbox" class="rowSelector" ng-model="item.isSelected" ng-change="rowSelect($index, $event)"/> status: {{item.isSelected}}
и соответствующие элементы модели:
$scope.items = [] //subsequently filled
$scope.rowsPerPage = 5;
$scope.rowSelect = function (ix, $event) {
var checked = (typeof $event == 'undefined') ? false : true;
if (!checked) { $scope.masterCheck = false; }
var rpp = $scope.rowsPerPage;
var p = $scope.__default__currentPage; //dirPagination's current page
var start = ((Math.max(0, p - 1) * rpp));
$scope.items[start + ix].isSelected = checked;
};
это работает должным образом. Установите/снимите отметку с строки, а значение {{item.isSelected}} обновлено в модели и отображается рядом с этим флажком.
Затем я добавил это/снаружи/из dirPagination повтора блока:
<input type="checkbox" id="masterCheckbox" ng-model="masterCheck" ng-click="checkAll()" />
и связанного с ним функции в модели:
$scope.masterCheck = false;
$scope.checkAll = function() {
var rpp = $scope.rowsPerPage;
var p = $scope.__default__currentPage; //dirPagination's current page
var start = ((Math.max(0, p - 1) * rpp));
var checked = $scope.masterCheck == true;
var rows = document.getElementsByClassName("rowSelector");
for (var ix = 0; ix < rows.length; ix++) {
rows[ix].checked = checked;
$scope.items[start + ix].isSelected = checked;
}
}
однако в) проверки checkAll (функция/отключив отдельные строки не отражаются в отображении {{item.isSelected}} каждой строки.
Явных установки отдельного элемента с
$scope.items[start + ix].isSelected = checked;
, кажется, устанавливают свойство «» IsSelected этого элемента в пределах области действия функции checkAll но дисплей строки не меняется.
Очевидно, что у меня что-то не так, возможно, непонимание проблемы с областью, но на данный момент я в тупике.
Любая помощь очень ценится :-)
У меня есть эта проблема в моем предыдущем посте [введите ссылку здесь] (http://stackoverflow.com/questions/33341103/i-want-to-delete-multiple-rows-selected-from-table- dom-is-change-but-it-is-de) –