1. 程式人生 > >js賦值給angularjs ng-model 資料的千分位格式

js賦值給angularjs ng-model 資料的千分位格式

<div ng-controller="myController">
    <input type="text" onblur="thousands(this)" onfocus="focusSelect(this)" ng-model="myValue">
</div>
<script>
//失去焦點成千分位
function thousands(thi){
//    獲取當前ng-model變數
//    $(angular.element(thi))轉化為jquery物件
    var qGetModel = $(angular.element(thi)).attr("ng-model");
//    獲取$scope變數
    var $scope = angular.element(thi).scope();

    var num = Math.round(thi.value * 100) / 100;  // 做保留兩位數字的四捨五入
    num = num.toString();   //將輸入的數字轉換為字串

    if(/^-?\d+\.?\d+$/.test(num)){  //判斷輸入內容是否為整數或小數
        if(/^-?\d+$/.test(num)){    //判斷輸入內容是否為整數 包含負數和正數
            num =num + ",00";   //將整數轉為精度為2的小數,並將小數點換成逗號
        }else{
            num = num.toString().replace(/\./,',');    //將小數的小數點換成逗號
        }

        while(/\d{4}/.test(num)){ //
            /***
             *判斷是否有4個相連的數字,如果有則需要繼續拆分,否則結束迴圈;
             *將4個相連以上的數字分成兩組,第一組$1是前面所有的數字(負數則有符號),
             *第二組第一個逗號及其前面3個相連的數字;
             * 將第二組內容替換為“,3個相連的數字,”
             ***/
            num = num.replace(/(\d+)(\d{3}\,)/,'$1,$2');
        }

        num = num.replace(/\,(\d*)$/,'.$1');   //將最後一個逗號換成小數點
//            console.log(num);
//            console.log(thi.value = num)
        thi.value = num;
        $scope[qGetModel] = num;  // 將資料賦值給ng-model變數 省去$apply()方法
//            return num;
    }else {
        thi.value = '0.00';
        // $scope[qGetModel] = "0.00";
    }
//    $scope.infot();  // 呼叫angularjs中的$scope.infot()函式
}
//獲得焦點選中
function focusSelect(thi){
    if (!thi.value)
        return;
    var qvalue = thi.value.toString();   //將輸入的數字轉換為字串
    qvalue = qvalue.replace(/[ ]/g,'');  // 去除空格
    qvalue = qvalue.replace(/,/g,'');  // 去除,
    qvalue = parseFloat(qvalue); // 去除小數點後為0的
    thi.value = qvalue;
    thi.select();
}
</script>


相關實用函式:

轉化為jquery物件  $(angular.element(domElement))   必須引入jquery

獲取當前元素的$socpe:     angular.element(domElement).scope() 
獲取當前app的injector:   angular.element(domElement).injector() 
獲取當前元素的controller:angular.element(domElement).controller()