$off是Vue的實例方法之一,在Vue實例中使用該方法可以取消已注冊的事件監聽器,以避免對應的事件處理函數被執行。
vm.$off(event, callback)
vm.$off([event1, event2], callback)
vm.$off()
第一個參數event為要取消監聽的事件類型,支持字符串或數組形式;第二個參數callback為要取消監聽的事件處理函數,可選。若不指定第二個參數,則將取消所有的事件監聽器。
假設我們有一個Vue實例vm,它已經注冊了一個名為myEvent的監聽器:
vm.$on('myEvent', function() {
console.log('myEvent was triggered')
})
我們可以使用$off方法來取消該事件的監聽:
// 取消myEvent事件監聽
vm.$off('myEvent')
// 執行myEvent事件,不會有任何輸出
vm.$emit('myEvent')
還可以通過傳入一個數組來同時取消多個事件的監聽:
vm.$on('event1', function() {
console.log('event1 was triggered')
})
vm.$on('event2', function() {
console.log('event2 was triggered')
})
// 取消event1和event2的監聽
vm.$off(['event1', 'event2'])
// 執行event1和event2事件,不會有任何輸出
vm.$emit('event1')
vm.$emit('event2')
需要注意的是,若要取消某個事件的特定處理函數,需要在調用$off方法時傳入該處理函數的引用:
function myHandler() {
console.log('myEvent was triggered')
}
// 注冊myEvent事件的監聽,指定處理函數為myHandler
vm.$on('myEvent', myHandler)
// 取消myEvent事件的myHandler處理函數
vm.$off('myEvent', myHandler)
// 執行myEvent事件,不會有任何輸出
vm.$emit('myEvent')
最后,若需要取消所有的事件監聽器,可以直接調用$off方法而不傳入任何參數:
// 取消所有的事件監聽器
vm.$off()
// 執行myEvent和event1事件,不會有任何輸出
vm.$emit('myEvent')
vm.$emit('event1')
上一篇python 屏蔽快捷鍵
下一篇python 局域網視頻