使用vue自定义指令遇到的一些问题

使用vue自定义指令遇到的一些问题

因为项目里有一个双击单元格变为可编辑状态需求,打算使用elementui+自定义指令实现.可是无论我是复制官方文档样例还是根据查询资料都没有生效.最后输出了一下el元素发现拿到的并不是input元素而是被包了一层(使用的elementui),输出如下

在这里插入图片描述
灵机一动往下取了一层input,自动聚焦实现.代码如下(考虑到场景不同如果没生效可以加一下nextTick试一试)

export default {
  directives: {
    focus: {
      inserted: function (el, binding, vnode) {
        el.querySelector("input").focus();
        // vnode.context.$nextTick(() => { 未生效可以试下这种方式
        // el.querySelector("input").focus();
        //});
      },
    },
  }
 }

至此问题解决,但是对于官方关于自定义指令的文档我还存在一些疑问,于是我直接复制样例代码粘贴到我的项目中,发现并没有生效,甚至连console都没有执行

这是官方样例
在这里插入图片描述
这是我的代码

const focus = {
  mounted: (el) => {
    console.log(123);
    el.focus();
  },
};

export default {
  directives: {
    // 在模板中启用 v-focus
    focus,
  },
 }

甚至都没有输出123.

最后我去查了查资料,发现自定义指令的钩子就这几种(bind、inserted、update、componentUpdated、unbind)并不存在什么mounted,但是由于是跟官方文档有些冲突,无法确认是官方文档错误还是我使用错误等,还是困惑,有大佬看到的话十分感谢如果能答疑的话

  • 10
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值