js賦值給angularjs ng-model 資料的千分位格式
阿新 • • 發佈:2018-12-26
<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()