Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在angualrjs中格式化电话号码?_Javascript_Angularjs - Fatal编程技术网

Javascript 如何在angualrjs中格式化电话号码?

Javascript 如何在angualrjs中格式化电话号码?,javascript,angularjs,Javascript,Angularjs,**您好,我无法格式化pageload上显示的电话号码 格式应该是“123-456-7890”,我尝试了不同的场景,但没有得到。有人能帮我吗 角度模块(“smbApp”) .指令(“controlDeviceSummary”,函数(){ 返回{ 限制:'E', templateUrl:'模板/设备\u摘要.template', 控制器:“DeviceSummaryCtrl” } .指令(“formatPhone”,函数(){ 返回{ 链接:功能(范围、元素、属性){ var phonefora

**您好,我无法格式化pageload上显示的电话号码 格式应该是“123-456-7890”,我尝试了不同的场景,但没有得到。有人能帮我吗

角度模块(“smbApp”) .指令(“controlDeviceSummary”,函数(){ 返回{ 限制:'E', templateUrl:'模板/设备\u摘要.template', 控制器:“DeviceSummaryCtrl” } .指令(“formatPhone”,函数(){ 返回{ 链接:功能(范围、元素、属性){ var phoneforamt=函数(值){ var value=value.replace(/(\d{3})(\d{3})(\d{4})/); } } } }) });

试试这个:

var newVal = /(\d{3})(\d{3})(\d{4})/.exec(value); //returns an array filled with required values. Index 0 contains original value.
newVal.splice(0,1);  //remove original value.
newVal.join("-");  //join the values with required separator ('-').

您需要在
链接
函数中使用一个元素,然后像这样更改文本:

angular.module("smbApp")
  .directive("controlDeviceSummary", function(){
     return {
       restrict: 'E',
       templateUrl: 'templates/device_summary.template',
       controller: 'DeviceSummaryCtrl'
  })

 .directive("formatPhone",function(){
    return {
      link:function($scope, element, attr){
          oldNumber = element.text();
          formattedNumber = oldNumber.replace(/(\d{3})(\d{3})(\d{4})/, '$1-$2-$3'));
          element.text(formattedNumber);     
        }
      }
  });
此外,标记中应该有蛇形大小写格式,而不是camelCasing格式:

<td><a href="#" format-phone>{{detail.mobileNumber}}</a></td>

angular
.module('myApp',[])
.controller('phoneCtrl',函数($scope){
$scope.data={
电话:1234567890
}
})
.factory('phoneFormatS',function(){
返回函数(值){
如果(值的类型=='number'){
值=值+“”;
}else if(值的类型!=='string'){
返回值;
}
返回值.replace(/(\d{3})(\d{3})(\d{4})/,“$1-$2-$3”);
}
})
.directive('phoneFormatD',函数(phoneFormatS){
返回{
范围:{
编号:'=phoneFormatD'
},
链接:功能(范围、要素、属性){
范围.$watch('number',函数(newValue,oldValue){
if(typeof newValue==='undefined')返回
html(phoneFormatS(newValue));
})
}
}
})
.filter('phoneFormatF',函数(phoneFormatS){
返回函数(编号){
返回电话格式(数字);
} 
})


{{data.phone | phoneFormatF}}


你应该把formatPhone变成一个过滤器,然后像
{{detail.mobileNumber | formatPhone}}
那样简单地将它插入你的把手中。这里有一个与此相关的问题:调用replace()后,您将如何处理
var value
。它似乎没有在任何地方使用。