有一个输入字段,如:
<input ng-if="$ctrl.inputType === 'input'"
name={{$ctrl.param.Name}}
type="text"
ng-keyup="$ctrl.keyp()"
..."
/>
和控制器中的keyp()函数:
class AlertParameterCtrl {
constructor(AlertParameterService, $element){
this.AlertParameterService = AlertParameterService;
this.$element = $element;
this.overrideText = 'Override default';
this.inputType = 'input';
this.unitlessParameter = false;
}
...
keyp() {
const dec = 2;
const regex = new RegExp("(\\.\\d{" + dec + "})\\d+", "g");
this.param.value = this.param.value.replace(regex, '$1');
}
}
AlertParameterCtrl.$inject = ['AlertParameterService', '$element'];
目的是在小数点后最多引入2位数。
我在debbuger
内放了一个keyp()
来查看它的行为方式。当在小数点后添加新数字时,this.param.value
的值保持在之前的步骤。
例如,如果初始值为100
而我写100.
,则this.param.value
的值仍为100
。
完成此步骤后,我会引入另一个数字100.2
,this.param.value
的值变为100.
,依此类推。
所以,当输入中有3位数字和变量(this.param.value
)中有2位数字时,我正在写另一个数字,看它是否会阻止它将它放入输入形式。
但是没有使用正则表达式,而this.param.value
的值未定义,我收到此错误:
无法读取未定义
的属性'replace'
有谁知道为什么会出现这两个问题?就像前面的步骤和为什么在引入第三个数字时,存储它的变量是未定义的?