간단한 하단 다중 선택angularjs 실현
11554 단어 angular
(function ( angular ) {
'use strict';
angular.module( 'angularMultiSelect', [] ).directive("multiSelect", function($document){
var template = " {{selectedName}}";
template += "";
template += ";
template += "" ;
template += " {{item.name}}";
return {
restrict:"AEC",
template:template,
scope:{
type:"@",
data:'=',
itemClicked: '&',
},
link:function(scope, element, attrs, controller){
//$compile(element.contents())(scope);
},
controller:function($scope){
function contains(collection, target) {
var containsTarget = false;
collection.some(function(object){
if (object === target) {
containsTarget = true;
return true;
}
return false;
});
return containsTarget;
}
$document.on('click', function(e){
if ($scope.drop){
var target = e.target.parentElement;
var parentFound = false;
while (angular.isDefined(target) && target !== null && !parentFound) {
if (!!target.className.split && contains(target.className.split(' '), 'multiSelectContainer') && !parentFound) {
parentFound = true;
}
target = target.parentElement;
}
if (!parentFound) {
$scope.$apply(function(){
$scope.drop=false;
});
}
}
});
$scope.selectedName="";
$scope.selectedName=" ";
$scope.selecteditems = "";
$scope.titleShow = true;
$scope.isAll=true;
var selecteditem = [];
var selectedName=[];
var item={id:"",name:""};
var map = Array.prototype.map;
var watch= $scope.$watch('data',function(newValue,oldValue,scope){
if(newValue){
selecteditem = map.call(newValue, function(value) { return value.id; });
selectedName= map.call(newValue, function(value) { return value.name; }); watch(); } });
$scope.selectAll=function($event,values){
var checkbox = $event.target;
var action = (checkbox.checked?'add':'remove');
var map = Array.prototype.map
if(action == 'add' ){
selecteditem = map.call(values, function(value) { return value.id; }); selectedName=map.call(values,function(value){return value.name;}); }else if(action == 'remove' ){ selecteditem = []; selectedName=[]; } ($scope.itemClicked|| angular.noop)({ $item: {id:selecteditem,name:selectedName}, $type: $scope.type, }); $scope.selectedName=selectedName.toString(); } $scope.checkboxClick = function(item,$event){ console.log("innerdrop"+ $scope.drop); $scope.isAll=false; var idx = selecteditem.indexOf(item.id); if($scope.inputType ==="radio"){ selecteditem = []; } if (idx > -1) { selecteditem.splice(idx, 1); selectedName.splice(idx,1); console.log('names'+selectedName); }else { selecteditem.push(item.id); selectedName.push(item.name); } //$scope.selecteditems = selecteditem.join(); if(selecteditem.length>0){ $scope.titleShow = false }else{ $scope.titleShow = true } ($scope.itemClicked|| angular.noop)({ $item:{id:selecteditem,name:selectedName}, $type: $scope.type, }); $scope.selectedName=selectedName.toString(); } $scope.isChecked = function (item){ return selecteditem.indexOf(item) > -1; } $scope.dropDowncontent = true; $scope.toggleAction = function(){ $scope.drop=!$scope.drop; } $scope.hideSelect=function(){ $scope.drop=false; } } } }); })( angular );
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Angular에서 타사 스크립트 및 CSS 작업Angular 방식으로 회로도가 있는 외부 라이브러리를 추가하거나 모듈을 가져옵니다. Angular.json은 Angular 프로젝트의 모든 설정 파일이며 표준 JavaScript 및 CSS 파일과 함께 타사 라이브...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.