我刚刚开始使用Vue.js,发现自己在某些情况下不断求助于 jQuery。最近,我尝试“触发”(或模拟)事件,例如单击或模糊事件,但未成功。
我知道在jQuery中您可以执行以下操作:
$('#my-selector').trigger('click');
但是如何使用Vue.js实现呢?我想尽可能地摆脱使用jQuery。
以下面为例:
<div id="my-scope">
<button type="button" v-on="click: myClickEvent">Click Me!</button>
</div>
<script>
new Vue({
el: "#my-scope",
data: {
foo: "Hello World"
},
methods: {
myClickEvent: function(e) {
console.log(e.targetVM);
alert(this.foo);
},
anotherRandomFunciton: function() {
this.myClickEvent();
}
}
});
</script>
如果要调用anotherRandomFunciton,我希望它模拟(或触发)上述click事件。但是,我尝试将此事件(或上例中的e)从不传递给函数。
Vue.js是否有实现此目的的方法?
您需要使用
v-el
如下方式获得对按钮的引用:然后,在您的方法中:
这只是本机DOM点击事件。请参阅说明
v-el
文件或从Vue 2.x开始:
由于Vue仅使用和侦听本机DOM事件。您可以使用以下方式触发本机DOM事件
Element#dispatchEvent
:这并非完全理想或最佳做法。理想情况下,您应该具有一个处理内部函数的函数和一个调用该函数的事件处理程序。这样,您可以在需要时致电内部人员。