从实例而不是 html 标签绑定点击
Bind click from instance instead of html tag
在 vue 中可以直接从 vue 实例绑定按钮点击吗?
我有这个按钮:
<el-button @click="alert_me" class="gf-button" type="primary" style="margin-left: 16px;">Button</el-button>
我不想删除 @click="alert_me"
并像我通常使用 jquery 那样做,但使用 vue。
可能吗?
我的 Vue 实例:
new Vue({
el: "#app",
data: {
},
methods: {
alert_me() {
alert('Hello from vue!');
}
},
});
谢谢
您可以利用 addEventListener
并在 mounted
生命周期中调用它。
mounted() {
document.querySelector('#element').addEventListener('click', event =>
{
//handle click
}
)
}
如果您需要以编程方式附加点击事件侦听器,可以使用经典 javascript api:
<template>
<el-button class="gf-button" type="primary">Button</el-button>
</template>
<script>
export default {
mounted () {
// jquery would also work if it's installed.
document.getElementByClassName('gf-button').addEventListener('click', this.alert_me)
},
methods: {
alert_me() {
console.log('alert')
}
}
}
</script>
您可以避免使用 Vue $refs
对象从文档中手动查询元素。
<template>
<el-button ref="myButton" class="gf-button" type="primary">Button</el-button>
</template>
<script>
export default {
mounted () {
this.$refs.myButton.addEventListener('click', this.alert_me)
},
methods: {
alert_me() {
console.log('alert')
}
}
}
</script>
但是,如果您在创建 Vue 组件后就需要该事件,我不建议这样做。它有点监督 Vue 的阴影 dom 优化。
所提供的 @click=""
语法是将点击侦听器附加到 html 元素的最佳方式。
在 vue 中可以直接从 vue 实例绑定按钮点击吗?
我有这个按钮:
<el-button @click="alert_me" class="gf-button" type="primary" style="margin-left: 16px;">Button</el-button>
我不想删除 @click="alert_me"
并像我通常使用 jquery 那样做,但使用 vue。
可能吗?
我的 Vue 实例:
new Vue({
el: "#app",
data: {
},
methods: {
alert_me() {
alert('Hello from vue!');
}
},
});
谢谢
您可以利用 addEventListener
并在 mounted
生命周期中调用它。
mounted() {
document.querySelector('#element').addEventListener('click', event =>
{
//handle click
}
)
}
如果您需要以编程方式附加点击事件侦听器,可以使用经典 javascript api:
<template>
<el-button class="gf-button" type="primary">Button</el-button>
</template>
<script>
export default {
mounted () {
// jquery would also work if it's installed.
document.getElementByClassName('gf-button').addEventListener('click', this.alert_me)
},
methods: {
alert_me() {
console.log('alert')
}
}
}
</script>
您可以避免使用 Vue $refs
对象从文档中手动查询元素。
<template>
<el-button ref="myButton" class="gf-button" type="primary">Button</el-button>
</template>
<script>
export default {
mounted () {
this.$refs.myButton.addEventListener('click', this.alert_me)
},
methods: {
alert_me() {
console.log('alert')
}
}
}
</script>
但是,如果您在创建 Vue 组件后就需要该事件,我不建议这样做。它有点监督 Vue 的阴影 dom 优化。
所提供的 @click=""
语法是将点击侦听器附加到 html 元素的最佳方式。