第二次调用ng-keyup时无法访问此

时间:2018-06-06 11:00:08

标签: javascript angularjs regex keyup

有一个输入字段,如:

<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.2this.param.value的值变为100.,依此类推。

所以,当输入中有3位数字和变量(this.param.value)中有2位数字时,我正在写另一个数字,看它是否会阻止它将它放入输入形式。

但是没有使用正则表达式,而this.param.value的值未定义,我收到此错误:

  

无法读取未定义

的属性'replace'

有谁知道为什么会出现这两个问题?就像前面的步骤和为什么在引入第三个数字时,存储它的变量是未定义的?

0 个答案:

没有答案