vue里的directive中的钩子函数的上下文(this)问题

发布于 2022-09-04 20:15:03 字数 451 浏览 13 评论 0

这段有关vue2.0 directive的代码

someDirective.js

export default {
    a: 'xxx',
    bind (el, binding) {
      console.log(this.a);
    }
 }
useDirective.vue

import SomeDirective from 'someDirective.js';
export default {
  directives: {
    SomeDirective
  },
  ....
}

会报未找到this的错误,
bind函数的上下文难道不是export default的对象,
如果不是,为什么?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

丘比特射中我 2022-09-11 20:15:03

via: http://geocld.github.io/2016/...

总结一下Vue.js 2.0指令的注意事项:

  1. 指令中没有this关键字

  2. 指令中通过el可以直接拿到指令绑定的元素;

  3. 需要传递回调函数及其他参数,统一通过对象字面量的形式传递

  4. update钩子会触发当前所有已绑定的元素,而不管该元素有没有更新值。

梦屿孤独相伴 2022-09-11 20:15:03

获取vue的上下文即可

    drag(el, binding, vnode) {
      // vue上下文
      let _this = vnode.context;
     }
风和你 2022-09-11 20:15:03

一般不这么定义变量。
你可以定义在上面,然后export default里去引用这个定义的对象。

峩卟喜欢 2022-09-11 20:15:03
  1. 定义的有问题, 看一下文档

红颜悴 2022-09-11 20:15:03

clipboard.png
我这边this也是undefined

黎夕旧梦 2022-09-11 20:15:03
export default {
    name: 'myDirective',
    a: 'xxx',
    bind(el, binding) {
        console.log(binding.def.a)
    }
}

通过binding.def可以拿到a

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文