效果樣式
如何使用?
<div een-numctrl
ng-model="shopnum" //需要綁定指令值
max="10000" //允許輸入的最大值
min="1" //允許輸入的最小值
width="7.5rem" //設(shè)置指令CSS寬度,一般為高度的3倍
height="2.5rem" //設(shè)置指令CSS高度
style="margin:1rem 0;" //設(shè)置其他CSS樣式
></div>
源代碼
function _link(scope,e,a,m){
if(scope.disabled) return false;
(scope.nums = parseInt(scope.ngModel) || parseInt(scope.def) || parseInt(scope.min) || 0);
if(a.ngModel){
scope.ngModel = scope.nums;
}
//判斷scope.def是否為數(shù)字,否則scope.def = 0;
if( !/^\-?[0-9]+$/.test(scope.def) ){
scope.def = 0;
}
//判斷scope.max是否為數(shù)字,否則scope.max = false
if( !/^\-?[0-9]+$/.test(scope.max) ){
scope.max = false;
}
//判斷scope.min是否為數(shù)字,否則scope.min = false
if( !/^\-?[0-9]+$/.test(scope.min) ){
scope.min = false;
}
console.log(scope.min,scope.max);
//在輸入框輸入值并失去焦點時觸發(fā)
scope.changeNum = ()=>{
//匹配輸入的是否為數(shù)字
if( !/^\-?[0-9]+$/.test(scope.nums) ){
scope.nums = scope.def || scope.min || 0;
}else{
//判斷scope.max是否為數(shù)字,匹配輸入的是否大于最大限制
if( scope.max!==false && parseInt(scope.nums) > parseInt(scope.max) ){
console.log("比較最大");
scope.nums = scope.max;
}
//判斷scope.min是否為數(shù)字,匹配輸入的是否小于最小限制
if( scope.min!==false && parseInt(scope.nums) < parseInt(scope.min) ){
console.log("比較最小");
scope.nums = scope.min;
}
}
if(a.ngModel){
scope.ngModel = parseInt(scope.nums);
}
}
//往上加 1
scope.addNum = ()=>{
if(scope.max!==false && scope.max <= scope.nums) return false;
scope.nums += 1
if(a.ngModel){
scope.ngModel = scope.nums;
}
}
//住下減 1
scope.reduceNum = ()=>{
if(scope.min!==false && scope.min >= scope.nums) return false;
scope.nums -= 1
if(a.ngModel){
scope.ngModel = scope.nums;
}
}
}
angular.module("eenNumctrl",[])
.directive("eenNumctrl",function(){
return {
restrict:"EA",
replace:false,
scope:{
height:"@", //高度,長度
width:"@", //高度,長度
max:"@" , //最大值
min:"@", //最小值,
def:"@", // 默認值
ngModel:"=",
disabled:"@",
},
//require:"^ngModel",
template:`
<div style="position:relative; display:inline-block;text-align:center;">
<div ng-click="addNum()" style="border-left:solid 1px #AAA;
width:{{height}};height:{{height}};
line-height:{{height}};
position:absolute;right:0;top:0;">+</div>
<div ng-click="reduceNum()" style="border-right:solid 1px #AAA;
width:{{height}};height:{{height}};
line-height:{{height}};
position:absolute;left:0;top:0;" >-</div>
<input type="text" ng-blur="changeNum()" ng-model="nums" style="border:solid 1px #AAA;
padding:0 {{height}};color:#888;
text-align:center;width:{{width}};
height:{{height}};box-sizing:border-box;" />
</div>
`,
link:_link,
}
})
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。