js赋值给angularjs ng-model 数据的千分位格式,获取ng scope作用域

xiaoxiao2021-02-28  137

<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() 

转载请注明原文地址: https://www.6miu.com/read-20917.html

最新回复(0)