使用v-on:click绑定的事件如何移除
vm.$off( [event, callback] )
vm.$off( [event, callback] )
Arguments:
{String} [event]
{Function} [callback]
Usage:Remove event listener(s).
If no arguments are provided, remove all event listeners;
If only the event is provided, remove all listeners for that event;
If both event and callback are given, remove the listener for that specific callback only.
vm.$off( [event, callback] )
参数:
{String} [event]
{Function} [callback]
用法:
删除事件监听器。
如果没有参数,则删除所有的事件监听器;
如果只提供了事件,则删除这个事件所有的监听器;
如果同时提供了事件与回调,则只删除这个回调。
http://cn.vuejs.org/api/#vm-off
上述方法没有办法,解除dom上直接绑定的事件,
可以多设置一个变量,来搞定,如果为true,直接return,不执行。 其他办法再想想。
我也有同样的疑问,但是发现文档和网上都找不到答案,貌似没有提供解绑函数,
最后采用了v-if解决:
<button v-if="!unbind" v-on:click="addClick">点击</button>
<button v-else >点击</button>
然后在data里添加unbind=false属性,需要解绑的时候将其设置为true
angular中只要把$scope.addClick重新赋值就可以了,你也可以试试动态绑定组件的方法吧,
if(flag){
vm.addClick = ()=>{
//写操作
}
}else{
vm.addClick = ()=>{
//只是个空方法
}
}
官网上说到事件处理的时候提到:
为什么在 HTML 中监听事件?
下面的原因里面有3点,最后一点说的是
当一个 ViewModel 被销毁时,所有的事件处理器都会自动被删除。你无须担心如何自己清理它们。
那么这个ViewModel是啥呢,暂且当做是vue渲染出来的DOM吧。
那么这句话的意思就是把当前的DOM干掉,那么你所绑定在这个DOM上的所以事件都会被删掉从而达到了移除点击事件的功能。
我不清楚我对ViewModel的理解是否正确,希望有大佬指出错误。
6 回答3k 阅读✓ 已解决
8 回答4.8k 阅读✓ 已解决
6 回答3.5k 阅读✓ 已解决
5 回答2.9k 阅读✓ 已解决
6 回答2.4k 阅读
5 回答6.4k 阅读✓ 已解决
4 回答2.3k 阅读✓ 已解决
现在我的处理方式是:
加上一个标志位来控制点击事件是否能触发.