Angular には、入力値を丸める組み込みディレクティブがありますか?
この場合、数値フィルターは適切ではありません。これはval
、ng-model でも実際の値を丸めたいからです。1つ書くとしたら、どんな感じですか?
Angular には、入力値を丸める組み込みディレクティブがありますか?
この場合、数値フィルターは適切ではありません。これはval
、ng-model でも実際の値を丸めたいからです。1つ書くとしたら、どんな感じですか?
ngBlur
andMath.round
を式で使用できます。
<input type="number" ng-model="number" ng-blur="number = Math.round(number)" />
ディレクティブを使用して双方向バインディング変換を作成できます。簡単な例を次に示します。
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 に変換します。