具有基于输入模型的价格范围/评级功能。在加载时,从后端进行设置时,它以整数开始,但是当您键入它时,它变为字符串。Angular中有什么方法可以将输入的值声明为整数?
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 type="text" ng-model="model.value" integer />
编辑: 更新了parseInt()
调用以包括基数10,如adam0101所建议
问题内容: 我正在尝试从控制器更改输入占位符的值,但无法完全弄清楚该如何做。 有没有办法修改模型的元素属性? 问题答案: 您可以在控制器中绑定变量: 在控制器中:
我正在尝试用Angular构建一个简单的计算器,如果我想的话,我可以覆盖总数。我有这部分的工作,但当我回去输入一个数字在一个或两个领域的总数没有在该领域的更新。 这是我的jsfiddlehttp://jsfiddle.net/YUza7/2/ 形式 javascript
我必须使用itextpdf api创建一个pdf。我在这个项目中也有j汤api。我已经设法创建了一个pdf,它满足了所有的要求,除了一件事。pdf中的一列单元格必须从网络应用程序UI从html内容中获取它们的内容文本。所以,我把所有的标签和所有的标签都拿到了pdf。像这样: 现在我找到了一种通过使用Jsoup摆脱标记的方法。解析(cellContentText)。text(); 然而,现在没有线路
问题内容: 我有一个输入,其类型设置为隐藏,我需要将其类型更改为文本。似乎无法弄清楚这一点,或者jQuery是否可行 问题答案: 使用jQuery 1.4,您可以在分离输入时更改其类型。
问题内容: 当我从纯JavaScript更改输入元素的值时,则不会更新角度模型。有什么方法可以通过在更改后手动触发一些事件来触发更新吗? 完整的示例可以在plunkr上找到。单击按钮后,我希望会以某种方式更新。有办法吗? 问题答案: 您不应该这样做(除非用于 测试 ,但即使如此,也请考虑量角器)。以这种方式与angular交互是一个坏主意。但是,如果必须,这是您的操作方法。 一种不同的中间方式是
问题内容: Whenver我有一个角表达式作为值的,它不会工作: 数字值将转换为字符串,并且复选框根本无法使用。 http://jsfiddle.net/punund/NRRj7/3/ 问题答案: 您不能动态更改输入的类型,因为IE不允许这样做,并且AngularJS需要跨浏览器兼容。因此,即使您可能会看到更改后的类型显示在源代码中,AngularJS也不会接受它- 类型仅被评估一次,并且无法更改