2016-09-15 113 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和其他人一起工作。我沒有在 –