2016-09-15 112 views
1

我有一个html滑块和一个输入字段,就在它旁边。输入栏显示与滑块.01 - .99相同的值。我想知道如何在输入字段中显示数字作为百分比版本,即.99显示为99%。代码很简单,但这里:显示输入作为百分比

<div sc-slider 
     ng-model="vm.baseline" 
     min="0.01" 
     max="0.99" 
     step="0.01"></div> 
    <input type="text" 
     class="form-control" 
     ng-model="vm.baseline"></input> 

如果你可以链接到我的其他在线很酷的东西,但我看了,但没有找到任何东西,当然不能是唯一的人需要做到这一点。我试图像vm.baseline *100那样做,但显然没有起作用。如果可以,请帮助!

+0

我的坏,过滤器不允许NG-模型。 – Kindzoku

+0

你需要一个需要ngModel控制器的指令,并在链接函数中改变'$ viewValue'。应该在这个 – charlietfl

回答

2

可以实现自定义的指令,require: ngModel,改变输入/输出,$parsers | $formattershttps://docs.angularjs.org/api/ng/type/ngModel.NgModelController

这里是一个plunker:https://plnkr.co/edit/FGuskyRwXCScPd1Kpd6a?p=preview

app.directive('toPercent', function(){ 
    return { 
    require: 'ngModel', 
    link: function(scope, element, attrs, ngModelCtrl){ 
     ngModelCtrl.$formatters.push(function(value){ 
      return value * 100 + '%'; 
     }); 

     ngModelCtrl.$parsers.push(function(value){ 
      return parseFloat(value.replace('%', '')); 
     }); 
    } 
    }; 
}); 
+0

上找到很多教程。你可以在格式化程序中使用Math.round(value * 100)+'%'来解决0.57和其他值的问题 –

+0

I prefere Number.toFixed()':) – Kindzoku

+0

new Number(value * 100).toFixed() ...非常好,并与0.57和其他人一起工作。我没有在 –