眾所周知,vue.js為我們提供了四個事件api,分別是
$on
,$once
,$off
,$emit
。
初始化事件
初始化事件在vm上建立乙個_events物件,用來存放事件。_events的內容如下:
存放事件名以及對應執行方法。
/*初始化事件*/
export function
initevents
(vm: component)
}
$on
$on
方法用來在vm例項上監聽乙個自定義事件,該事件可用$emit觸發。
vue.prototype.$on = function
(event: string | array, fn: function)
: component
} else
}return vm
}
$once
$once
監聽乙個只能觸發一次的事件,在觸發以後會自動移除該事件。
vue.prototype.$once = function
(event: string, fn: function)
: component
on.fn = fn
vm.$on(event, on)
return vm
}
$off
$off
用來移除自定義事件
vue.prototype.$off = function
(event?: string | array, fn?: function)
: component
// array of events
/*如果event是陣列則遞迴登出事件*/
if (array.isarray(event))
return vm
}// specific event
const cbs = vm._events[event]
/*github:
/*本身不存在該事件則直接返回*/
if (!cbs)
/*如果只傳了event引數則登出該event方法下的所有方法*/
if (arguments.length === 1)
// specific handler
/*遍歷尋找對應方法並刪除*/
let cb
let i = cbs.length
while (i--)
}return vm
}
$emit
$emit
用來觸發指定的自定義事件。
vue.prototype.$emit = function
(event: string)
: component "
is emitted in component ` +
`$ but the handler is registered for
"$". ` +
`note that html attributes are case-insensitive and you cannot use ` +
`v-on to listen to camelcase events when using in-dom templates. ` +
`you should probably use
"$" instead of "$".`)}
}let cbs = vm._events[event]
if (cbs)
}return vm
}
Vue事件機制
眾所周知,vue.js為我們提供了四個事件api,分別是 on,once,off,emit。初始化事件在vm上建立乙個 events物件,用來存放事件。events的內容如下 存放事件名以及對應執行方法。初始化事件 export function initevents vm component on...
mysql事件機制 mysql事件機制 定時任務
定時任務是老生常談了,因為我們總是需要定時修改特定的資料。實現它的方法肯定不止一種,但我在相當長一段時間裡都是用程式編碼去做的,今天突然想到 為什麼一定要採用呼叫的方式?用資料庫自身的能力去實現不是更好麼?通過了解,mysql的事件機制可以完成定時任務,其原理是在指定的時間呼叫指定的儲存過程。現在很...
mysql事件機制 mysql事件機制 定時任務
定時任務是老生常談了,因為我們總是需要定時修改特定的資料。實現它的方法肯定不止一種,但我在相當長一段時間裡都是用程式編碼去做的,今天突然想到 為什麼一定要採用呼叫的方式?用資料庫自身的能力去實現不是更好麼?通過了解,mysql的事件機制可以完成定時任務,其原理是在指定的時間呼叫指定的儲存過程。現在很...