【发布时间】:2020-05-07 10:52:39
【问题描述】:
我想在自定义指令的钩子之间共享一个变量。
例子:
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?
附:我认为唯一的解决方法是修改el,以便在bind 中附加一个html 属性“my-custom-index”并在unbind 中读取它。但这太 hacky ...
【问题讨论】:
-
我同意这很hacky,但它也是推荐的方法。见vuejs.org/v2/guide/…。 Quote: '如果需要跨hook共享信息,建议通过element的dataset来实现。'
-
@skirtle 嗯,我在文档中错过了这一点。我想你的评论应该是一个答案))
-
并不是一个真正的解决方法,因为指令没有自己的实例并且不一定对应于 comp 实例,在 el 上共享数据是合理的。请注意,数据集是字符串,最好将其存储为
el属性以保留数字。
标签: javascript vue.js vuejs2 vue-directives