Javascript Vue为什么输入中的值--在v模型中表示为空字符串?

Javascript Vue为什么输入中的值--在v模型中表示为空字符串?,javascript,vue.js,vuejs2,Javascript,Vue.js,Vuejs2,嘿,我正在开发只用于整数的自定义输入组件,有两种基于接受负数道具的模式,指示它是否应该接受负数,问题是我当前的实现允许添加多个-符号,而组件也应该接受负数 我试图完成的是在propacceptNegatives=“true”上,组件应该接受输入或粘贴值,比如-2或2而不是-0或“--”,“-2”,因为出于某种原因,这些值被视为空字符串 输入组件的Html,它使用Buefy JS部分 Keydown事件处理程序 handleKeyDown(事件){ const{key}=事件; if(th

嘿,我正在开发只用于整数的自定义输入组件,有两种基于
接受负数
道具的模式,指示它是否应该接受负数,问题是我当前的实现允许添加多个
-
符号,而组件也应该接受负数

我试图完成的是在prop
acceptNegatives=“true”
上,组件应该接受输入或粘贴值,比如
-2
2
而不是
-0
或“--”,“-2”,因为出于某种原因,这些值被视为空字符串

输入组件的Html,它使用
Buefy


JS部分
  • Keydown事件处理程序
handleKeyDown(事件){
const{key}=事件;
if(this.acceptNegatives&&this.isAdditionalKeyAllowed(事件)){
这是。$emit(“keydown”,key);
返回;
}
if(this.isAdditionalKeyAllowed(event)| | this.isValidNumber(key)){
返回此.allowPositiveNumbersOnly(事件);
}
event.preventDefault();
},
  • 这是附加钥匙吗
isAdditionalKeyAllowed(事件){
const allowedkeywithout meta=Object.values(允许的键)。includes(键码);
if(this.hasAlreadyMinusSign(event.target.value,key)){
返回false;
}
如果(本.接受负片){
返回(
allowedKeyWithoutMeta | | key==“-”
);
}
返回allowedKeyWithoutMeta;
},
  • hasAleardyMinusSign fn检查是否已经有减号,失败原因是-被视为空字符串
hasAlreadyMinusSign(值、键){
返回this.acceptNegatives&&value。包括(“-”&&key==“-”;
},
我还准备了一个小演示,演示它在Vue中的工作原理。目前我不知道如何解决这个问题。我应该使用watcher还是应该以某种方式计算值?谢谢你的建议


您需要一种方法来消除
'--1'
的可能性,最简单的方法是使用一些:

然后将输入绑定到该计算机并使用,类似于:

inputVal() {
  get() {
    // Regex that replaces all occurrences of "-" except the last
    return this.value.replace(/[-](?=.*[-])/g, "");
  },
  set(val) {
    this.value = val;
  }
}
或者您可以添加我提供的第一个代码片段,作为在其他验证过程中调用的方法。那由你决定

inputVal() {
  get() {
    // Regex that replaces all occurrences of "-" except the last
    return this.value.replace(/[-](?=.*[-])/g, "");
  },
  set(val) {
    this.value = val;
  }
}