input模型在更改时从整数更改为string
有一种基于input模型的价格范围/评级function。 在加载时,当它从后端设置时,它以一个整数开始,但是当你键入它时,它将变成一个string。 Angular有没有什么方法将input的值声明为整数?
HTML:
<input type="text" name="sellPrice" id="sellPrice" class="sell-price" data-ng-model="menu.totalPrice" data-ng-change="updateMenuPriceRange()"required>
JS:
$scope.updateAggregatePricing(); if ($scope.menu.totalPrice === 0) { $scope.menuPriceRange = ""; } else if ($scope.menu.totalPrice < 10) { $scope.menuPriceRange = "$"; } else if ($scope.menu.totalPrice >= 10 && $scope.menu.totalPrice <= 12.50) { $scope.menuPriceRange = "$$"; } else if ($scope.menu.totalPrice >= 12.51 && $scope.menu.totalPrice < 15) { $scope.menuPriceRange = "$$$"; } if ($scope.menu.totalPrice >= 15) { $scope.menuPriceRange = "$$$$"; } else { $scope.menuPriceRange = ""; }
我知道我迟到了,但我想我会发布这个答案,因为其他人可能仍然在寻找替代品。
你可以通过使用AngularJS指令链接函数来解决这个问题。 代码:
var myMod = angular.module('myModule', []); myMod.directive('integer', function(){ return { require: 'ngModel', link: function(scope, ele, attr, ctrl){ ctrl.$parsers.unshift(function(viewValue){ return parseInt(viewValue, 10); }); } }; });
然后,您可以在input元素上使用此伪指令,以确保input的任何值都被parsing为一个整数。 (显然这个例子没有validationinput,以确保input的内容实际上是一个整数,但是你可以很容易地使用正则expression式来实现这个例子)
<input type="text" ng-model="model.value" integer />
有关这个主题的更多信息可以在AngularJS文档的窗体上find,就在“自定义validation”部分: http : //docs.angularjs.org/guide/forms 。
编辑:更新parseInt()
调用包含基数10,如adam0101build议
是的,使用typesnumber
input:
<input type="number" name="sellPrice" ...>
在我的条件之前,以整数parsing模型。
$scope.menu.totalPrice = parseInt($scope.menu.totalPrice, 10);