啊不想通过Input的 maxlenght 来控制长度,而是通过@Input ,如果我们不加this.$nextTick(() => {
那么,那么导致v-model="newName" 的值确实被我限制在了4个,但是视图并没有发生变化,会越写越多,但是如果我加上了this.$nextTick(() => {
<input placeholder="请输入名称" v-model="newName" cursor-spacing="500rpx" id="name" @input="inputChange" />
inputChange(e, type) {
let text = e.detail.value.trim()
console.log('text222', text)
if (e.currentTarget.id == 'name') {
// 为什么需要这个? 因为你改了this.newName 这个值再去改E是一个异步事件 在这个异步事件之前已经调用了下一个inputChange
// 此时赋的值还是之前的值 而使用了$nextTick 可以确保这个方法在所有异步事件之后调用 就可以获取最新的值了
this.$nextTick(() => {
this.newName = text.length > 4 ? text.substring(0, 4) : text
})
那么就正常了,那么为什么会这样呢?
因为
因为你改了this.newName 这个值再去改E(input标签 里面的@input事件)是一个异步事件 在这个异步事件之前已经调用了下一个inputChange,此时赋的值还是之前的值 而使用了$nextTick 可以确保这个方法在所有异步事件之后调用 就可以获取最新的值了