首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Vue自定义指令:如何在钩子之间共享变量?

Vue自定义指令:如何在钩子之间共享变量?
EN

Stack Overflow用户
提问于 2020-05-07 18:52:39
回答 2查看 410关注 0票数 0

我想在自定义指令的钩子之间共享一个变量。

示例:

代码语言:javascript
复制
Vue.directive('demo',{
  bind: function(el, binding, vnode) {
    const index = setInterval(/* ... */) //I have an "index" here
  },
  unbind: function(el, binding, vnode) {
    clearInterval(index) // I want to use "index" here
  }
})

如何将值从bind传递到unbind

附注:在我的脑海中唯一的解决办法是修改索引,在bind中附加一个html属性“my - el -index”,并在unbind中读取它。但它太老土了.

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-05-08 19:17:55

它似乎是一个使用html属性的way to go

代码语言:javascript
复制
Vue.directive('demo',{
  bind: function(el, binding, vnode) { 
    //save
    el.setAttribute('x-my-attr', index);
  },
  unbind: function(el, binding, vnode) {
    //read
    const index = el.getAttribute('x-my-attr'); // The value is a string!
  }
})
票数 1
EN

Stack Overflow用户

发布于 2020-05-08 19:36:44

指令定义所在的位置必须在JS模块中。那么为什么不在模块中定义你的变量呢?然后在模块作用域中的任何位置读写它。

像这样:

代码语言:javascript
复制
let va = 9
Vue.directive('demo',{
  bind: function(el, binding, vnode) {
    va = va + 1
    const index = setInterval(/* ... */) //I have an "index" here
  },
  unbind: function(el, binding, vnode) {
    console.log(va)
    clearInterval(index) // I want to use "index" here
  }
})

或者,您可以使用this.va = 'covid-19'var va = this.va

或者el.dataset

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61655992

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档