【发布时间】:2018-01-09 21:21:39
【问题描述】:
我正在使用vue-2.4 和element-ui 1.4.1。
情况
我有一个基本的input,它与v-model 链接到computed property。当blur 我检查输入的值是大于还是小于min 和max 并且我做我必须做的......这里没什么特别的。
问题
输入中显示的值并不总是等于enteredValue
重现步骤
1) 输入60 --> 显示的值是最大值,所以50 和enteredValue 是50(没关系)
2) 点击外部
3) 输入80 --> 显示的值为80,enteredValue 为50
问题
我该如何解决这个问题,以便显示的值始终与 enteredValue 相同?
这是重现我所面临的JSFIDDLE的最少代码
<div id="app">
The variable enteredValue is {{enteredValue}}
<el-input v-model="measurementValueDisplay" @blur="formatInput($event)"></el-input>
</div>
var Main = {
data() {
return {
enteredValue: '',
max: 50,
min: 10
}
},
computed: {
measurementValueDisplay: {
get: function () {
return this.enteredValue + ' inchs'
},
set: function (newValue) {
}
},
},
methods: {
formatInput($event) {
let inputValue = $event.currentTarget.value;
if (inputValue > this.max) { this.enteredValue = this.max}
else if (inputValue < this.min) { this.enteredValue = this.min}
else this.enteredValue = inputValue
}
}
}
var Ctor = Vue.extend(Main)
new Ctor().$mount('#app')
【问题讨论】:
-
我试过 ton iput 80,正如你所说,但两者都显示 50,就像代码说的那样
-
先输入
60然后在框外点击触发blur再在框内点击输入80 -
nshow 50 而不是 80
-
我不确定我理解你的意思。您是否按照这些步骤进行操作?你得到的和我发布的一样吗?
-
@Leo Oke,但使用计算属性作为输入模型对我来说感觉像是一种反模式。他们只是默认情况下是吸气剂是有原因的。主要目的是缓存一个操作的结果,只有在底层数据属性发生变化时才重新计算。不要将该结果用作反应模型。此外,由于字符串附加,使用计算结果作为输入使验证更加困难。
标签: vuejs2