2

Angular には、入力値を丸める組み込みディレクティブがありますか?

この場合、数値フィルターは適切ではありません。これはval、ng-model でも実際の値を丸めたいからです。1つ書くとしたら、どんな感じですか?

4

3 に答える 3

6

ngBlurandMath.roundを式で使用できます。

<input type="number" ng-model="number" ng-blur="number = Math.round(number)" />
于 2013-10-11T20:25:25.520 に答える
3

ディレクティブを使用して双方向バインディング変換を作成できます。簡単な例を次に示します。

app.directive('roundConverter', function() {
  return {
    restrict: 'A',
    require: 'ngModel',
    link: function(scope, elem, attrs, ngModelCtrl) {
      function roundNumber(val) {
        var parsed = parseFloat(val, 10);
        if(parsed !== parsed) { return null; } // check for NaN
        var rounded = Math.round(parsed);
        return rounded;
      }
      // Parsers take the view value and convert it to a model value.
      ngModelCtrl.$parsers.push(roundNumber);
   }
 };
});

http://plnkr.co/edit/kz5QWIloxnd89RKtfkuE?p=preview

それは本当にあなたがそれをどのように機能させたいかによって異なります。ユーザー入力を制限する必要がありますか? モデルとビューの値が異なっていてもかまいませんか? モデルで無効な数値入力を null にする必要がありますか? これらはすべてあなたが下す決定です。上記のディレクティブは、無効な数値を null に変換します。

于 2013-10-11T20:48:29.283 に答える