【发布时间】:2018-08-09 00:03:43
【问题描述】:
我试图在我的 vue 组件中重新创建 this exact 内联编辑功能。但是,我可能错了,我看到 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 is not an object (评估'ev.$refs.input')"
【问题讨论】:
-
为什么要绑定
ref?您的组件似乎没有inputdata或prop属性。您可能只想使用ref="input",不:ref="input" -
仅供参考,您的 JSFiddle 示例使用的是 Vue 0.12.15。那是对的吗?如果没有,你想用什么版本?
-
请原谅我没有粘贴我正确/当前的代码,我更新了问题代码
-
我想使用最新的 Vue 2
标签: javascript vue.js