javascript – AngularJS:如何使用shift和鼠标单击选择多个复选框?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – AngularJS:如何使用shift和鼠标单击选择多个复选框?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2267字,纯文字阅读大概需要4分钟。
内容图文
是否可以使用Shift和鼠标单击使用AngularJS在表格上选择多个元素?
我有一个表,其中第一列是一个复选框,我想使用SHIFT键和鼠标单击以连续选择多行,可以执行删除,编辑等操作.
示例步骤:
>单击第1行的复选框.
>按住SHIFT键.
>单击第10行的复选框.
结果:将选择前10行.
有谁知道如何使用AngularJS完成这项工作?
解决方法:
我有类似的要求.虽然更新复选框的正确方法是直接更新模型,但我想要一个更通用的解决方案.
所以我构建了一对指令,因此我可以在任何复选框列表中重复使用它.基本上你用< multi-checkbox-container>包装所有复选框.然后为每个复选框添加一个多复选框属性.代码完成其余的工作.简单易行.
angular
.module('app', [])
.controller('MainController', function($scope) {
var vm = this;
$scope.checks = {};
$scope.botigues = [1, 2, 3, 4, 5, 6];
})
.component('multiCheckboxContainer', {
controller: function () {
var ctrl = this;
var checkboxes = [];
var checkboxModels = [];
var previousClickedCheckbox = null;
ctrl.addCheckbox = addCheckbox;
ctrl.onCheckboxClick = onCheckboxClick;
function addCheckbox(checkbox, checkboxModelCtrl) {
checkboxes.push(checkbox);
checkboxModels.push(checkboxModelCtrl);
}
function onCheckboxClick(checkbox, shiftKey) {
var start, end, i, checking;
if (shiftKey && previousClickedCheckbox) {
checking = checkbox.prop('checked')
start = checkboxes.indexOf(previousClickedCheckbox);
end = checkboxes.indexOf(checkbox);
if (start > end) {
start = start + end;
end = start - end;
start = start - end;
}
for (i = start; i <= end; i++) {
checkboxes[i].prop('checked', checking);
checkboxModels[i].$setViewValue(checking);
}
}
previousClickedCheckbox = checkbox;
}
}
})
.directive('multiCheckbox', function () {
return {
restrict: 'A',
require: ['^^multiCheckboxContainer', 'ngModel'],
link: function (scope, element, attrs, controllers) {
var containerCtrl = controllers[0];
var ngModelCtrl = controllers[1];
containerCtrl.addCheckbox(element, ngModelCtrl);
element.on('click', function (ev) {
containerCtrl.onCheckboxClick(element, ev.shiftKey);
});
}
};
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.2/angular.min.js"></script>
<div ng-app="app" ng-controller="MainController as vm">
<multi-checkbox-container>
<div ng-repeat="botiga in botigues">
<input type="checkbox" multi-checkbox ng-model="checks[botiga]">
<label>Botiga {{botiga}}</label>
</div>
</multi-checkbox-container>
<p>checks = {{ checks }}</p>
</div>
内容总结
以上是互联网集市为您收集整理的javascript – AngularJS:如何使用shift和鼠标单击选择多个复选框?全部内容,希望文章能够帮你解决javascript – AngularJS:如何使用shift和鼠标单击选择多个复选框?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。