我正在尝试在我的vue组件中重新创建这个行内编辑功能。然而,可能我错了,我看到一些语法已经过时,特别是使用了v-el
指令。我已经尝试更新语法如下:
new Vue({
el: '#app',
data: {
numbers: [{
val: 'one',
edit: false
},
{
val: 'two',
edit: false
},
{
val: 'three',
edit: false
}
]
},
methods: {
toggleEdit: function(ev, number) {
number.edit = !number.edit
// Focus input field
if (number.edit) {
Vue.nextTick(function() {
ev.$refs.input.focus(); // error occurs here
})
}
},
saveEdit: function(ev, number) {
//save your changes
this.toggleEdit(ev, number);
}
}
})
<div id="app">
<template v-for="number in numbers">
<span v-show="!number.edit"
v-on:click="toggleEdit(this, number)">{{number.val}}</span>
<input type="text"
ref="input"
v-model="number.val"
v-show="number.edit"
v-on:blur="saveEdit(ev, number)"> <br>
</template>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.13/dist/vue.js"></script>
然而我遇到了一系列错误...有没有建议如何正确执行此操作?
以下是错误信息:
[Vue警告]: 在nextTick中出错:"TypeError: undefined不是一个对象(评估'ev.$refs.input')"
ref
?你的组件似乎没有input
、data
或prop
属性。你可能只是想使用ref="input"
,而不是:ref="input"
。 - Phil