我认为tht有以下要求:
type
必须是number
现在,以编程方式将值设置为1.20
,以便在输入中显示该值是复杂的:
parseFloat(1.20)
返回1.2
(1.20). toFig(2)
返回一个字符串'1.20'
,AngularJS在尝试设置该值时失败有什么想法吗?
您可以利用NgModel并添加解析器或格式化程序。
function NumberFormatter($filter){
'ngInject';
return {
restrict: 'A',
require: '^ngModel',
link: function(scope, element, attrs, ngModelCtrl){
//format text going to user (model to view)
ngModelCtrl.$formatters.push(function(value) {
return $filter('number')(parseFloat(value) , 2);
});
//format text from the user (view to model)
ngModelCtrl.$parsers.push(function(value) {
return doParsing(value)
});
}
}
}
ngModel格式化程序和解析器
基于https://github.com/angular/angular.js/issues/5680#issuecomment-206325921我做了以下工作:
(function(){
angular.module('app')
.directive('toFixed', [function () {
return {
require: '^ngModel',
link: function(scope, element, attrs, ngModel) {
ngModel.$formatters.push(function(value) {
return parseFloat(value);
});
ngModel.$render = function() {
var viewValue = parseFloat(ngModel.$viewValue || 0);
element.val(viewValue.toFixed(2));
}
}
};
}]);
}());
我有一个输入类型号。如果ng-model为null或空或未定义,我想设置默认值1。它工作正常。但是在同一页面上,我有一个提交按钮。单击此按钮,我只是为一些验证失败返回false。但是当它在验证失败后返回时。我的下拉列表(输入类型号)显示空值。我检查ng-model的值,它是空的。 因此,如果该值不是正确的数字,我希望它在默认情况下设置为1。
问题内容: 如果输入不是有效数字,则使用将导致事件侦听器内部返回空字符串。 但是,无效字符仍显示在输入中。 有什么方法可以从事件侦听器中获取实际 显示 的值,包括无效字符? 我的最终目标是防止用户在字段中实际键入任何非数字字符。我需要使用以便移动设备使用数字虚拟键盘。我的目标是做这样的事情上,但这并不因为如果无效字符键入工作,从阅读的回报。 问题答案: 如果您不喜欢传入键值,请尝试阻止默认行为:
问题内容: 如何利用ng-message作为数字类型?ngMessage是否支持max和min属性?如果可以,怎么办? 演示链接 来自角度文档的示例链接 问题答案: 作为模块正式引入的版本,因此您需要修复以下问题: 使用版本或更高版本(现在是最新版本)。 包含在HTML中(这是一个单独的脚本)。 声明为模块/应用程序的依赖项。 另请参 见此简短演示 。
问题内容: 我正在尝试编写一条指令,该指令会自动在中格式化数字,但模型未格式化。使它正常工作是很好的,在加载时,输入值在控制器中显示为1,000,000和1000000,但是,只有键入时,该函数才会触发。发生火灾的唯一时间是指令被加载且值为0时。 我怎样才能使它在keypress上起作用(我曾尝试绑定到keypress / keyup,但它不起作用)。 这是我的代码: 问题答案: 这是我们使用的工
问题内容: Whenver我有一个角表达式作为值的,它不会工作: 数字值将转换为字符串,并且复选框根本无法使用。 http://jsfiddle.net/punund/NRRj7/3/ 问题答案: 您不能动态更改输入的类型,因为IE不允许这样做,并且AngularJS需要跨浏览器兼容。因此,即使您可能会看到更改后的类型显示在源代码中,AngularJS也不会接受它- 类型仅被评估一次,并且无法更改
我正在使用