ng-directive自定義指令 - 可加減數(shù)量

效果樣式
如何使用?
<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ù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,327評論 6 537
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,996評論 3 423
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,316評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,406評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,128評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,524評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,576評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,759評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,310評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 41,065評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,249評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,821評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,479評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,909評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,140評論 1 290
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,984評論 3 395
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,228評論 2 375

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,690評論 25 708
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,156評論 4 61
  • 距離上次100小時教培已經(jīng)過去10個月,再走進100小時的進階班課堂,又是一次全新的感受。上次培訓后,通過對瑜伽的...
    龍竹前閱讀 822評論 0 0
  • 繞過山水 繞過風霜 我們向著白雲(yún)前進 哪怕最後 也無法飛上天堂 Photo by Nandor Szotak
    憨憨爹閱讀 115評論 0 0
  • 接到單位出差的任務(wù),是去合肥去做市場調(diào)研,飛機是小型飛機,不是那么滿意,上了飛機,提供的服務(wù)還是很不錯的,早餐比較...
    OO碰到OO閱讀 102評論 0 1