ng-directive自定义指令 - 可加减数量

效果样式
如何使用?
<div een-numctrl 
   ng-model="shopnum"           //需要绑定指令值
   max="10000"                        //允许输入的最大值
   min="1"                                 //允许输入的最小值
   width="7.5rem"                     //设置指令CSS宽度,一般为高度的3倍
   height="2.5rem"                   //设置指令CSS高度
   style="margin:1rem 0;"         //设置其他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是否为数字,否则scope.def = 0;
    if( !/^\-?[0-9]+$/.test(scope.def) ){
        scope.def = 0;
    }
    //判断scope.max是否为数字,否则scope.max = false
    if( !/^\-?[0-9]+$/.test(scope.max) ){
        scope.max = false;
    }
    //判断scope.min是否为数字,否则scope.min = false
    if( !/^\-?[0-9]+$/.test(scope.min) ){
        scope.min = false;
    }
    console.log(scope.min,scope.max);
    //在输入框输入值并失去焦点时触发
    scope.changeNum = ()=>{
        //匹配输入的是否为数字
        if( !/^\-?[0-9]+$/.test(scope.nums) ){
            scope.nums = scope.def || scope.min || 0;
        }else{
            //判断scope.max是否为数字,匹配输入的是否大于最大限制
            if( scope.max!==false && parseInt(scope.nums) > parseInt(scope.max) ){
                console.log("比较最大");
                scope.nums = scope.max;
            }
            //判断scope.min是否为数字,匹配输入的是否小于最小限制
            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,
    }
})
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,874评论 6 479
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,151评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,270评论 0 342
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,137评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,116评论 5 370
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,935评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,261评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,895评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,342评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,854评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,978评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,609评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,181评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,182评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,402评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,376评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,677评论 2 344

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,493评论 25 707
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,022评论 4 62
  • 距离上次100小时教培已经过去10个月,再走进100小时的进阶班课堂,又是一次全新的感受。上次培训后,通过对瑜伽的...
    龙竹前阅读 805评论 0 0
  • 繞過山水 繞過風霜 我們向著白雲前進 哪怕最後 也無法飛上天堂 Photo by Nandor Szotak
    憨憨爹阅读 104评论 0 0
  • 接到单位出差的任务,是去合肥去做市场调研,飞机是小型飞机,不是那么满意,上了飞机,提供的服务还是很不错的,早餐比较...
    OO碰到OO阅读 100评论 0 1