本周主要遇到一个双击编辑的需求,但是v-model只支持绑定在表单元素上,然后我就开始找解决方案。发现Vue有个使用自定义事件的表单输入组件,里面说的是:
自定义事件可以用来创建自定义的表单输入组件,使用 v-model 来进行数据双向绑定。看看这个:1
<input v-model="something">
这不过是以下示例的语法糖:1
<input v-bind:value="something" v-on:input="something = $event.target.value">
所以在组件中使用时,它相当于下面的简写:
1 | <custom-input v-bind:value="something" v-on:input="something = arguments[0]"></custom-input> |
可以看到,这个方法就是通过监听value的值的改变来触发自定义的input事件来达到效果。更多的解释可以看上面的链接,解释的很清楚了。
那么我就直接上代码了。
1 | var editableRow = { |
当时我还遇到一个问题,就是focus方法一直无效,后来我才想起来,vue操作dom是有延迟的,所以需要加入$.nextTick问题顺利解决。