javascript - VueJS如何双击双击

标签 javascript vue.js

我有一个包含不同宽度列的表格。我使用粘性标题,我必须为其计算列宽。

现在我编写了一个函数,通过双击标题来增加列宽。这适用于第一次双击。但是,如果我点击它 4 或 6 次,在第一次双击后没有任何反应。 如何重置事件,以便在再点击 2 次后再次触发事件?

当我移动鼠标时,我可以连续双击几次。但这不是目标。

这是代码片段:

<th 
  v-for="c in data.columns" 
  v-if="visiblecolumns.includes(c)" 
  v-on:dblclick="COLUMN_DEFINITION[c]+=50" 
  :style="{ 'min-width': COLUMN_DEFINITION[c] + 'px', 'max-width': COLUMN_DEFINITION[c] + 'px' }">
    {{ c }}
</th>

最佳答案

<th 
  v-for="c in data.columns" 
  v-if="visiblecolumns.includes(c)" 
  @click="changeColumnDefinition" 
  :style="{ 'min-width': COLUMN_DEFINITION[c] + 'px', 'max-width': COLUMN_DEFINITION[c] + 'px' }">
    {{ c }}
</th>

发件人:vue.js: how to handle click and dblclick events on same element , 并按照@JBDouble05 的建议

new Vue({
    el: '#app',
    data: {
        counter: 0,  // count the clicks
        timer: null  // Needs to be specified here so it can be accessed on both clicks
    },    
    methods: {
        changeColumnDefinition: function(event){
            var self = this
            this.counter++ 
            if(this.counter == 1) {
                this.timer = setTimeout(function() {
                    // DO NOTHING BUT RESET IN CASE THERES JUST ONE CLICK                    
                    self.counter = 0
                }, 500);  // increase delay as you like
            }else{
                clearTimeout(this.timer);  
                // COLUMN_DEFINITION[c]+=50
                self.counter = 0;
            }         
        }      
    }
});

注意这超出了问题范围,但是:

我个人会将其封装在一个组件中,因为您可能会有多个 header 。如果您需要调用外部函数,只需使用:

this.$emit('someEvent', someValue);

发出一个事件,然后在您的组件中访问它

<my-awesome-component @someEvent="someFunction"></my-awesome-component>

关于javascript - VueJS如何双击双击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52091102/

相关文章:

Javascript - 2 个图像出现在 codepen 演示中

javascript - jQuery 的 mouseenter-mouseleave 与悬停事件之间的区别?

javascript - 使用文档自动 ID firebase 查询 "where"子句

javascript - 模拟数组功能

javascript - 等待添加到 CSS 的图像加载 - JQuery

javascript - 我可以在需要支持 IE 的遗留项目中使用 Vue + Vuetify 吗?

javascript - 如何在Vue JS组件中使用全局变量?

javascript - Vue.js 怎么能像 Angular.js 那样配置 templateUrl 呢?

JavaScript 切换奇怪的行为

javascript - 将变量传递给 Vue js 模态组件