Improve event binding
This commit is contained in:
parent
23d0939647
commit
3e44c9234c
1 changed files with 3 additions and 2 deletions
|
|
@ -515,15 +515,16 @@ module.exports = function($window) {
|
||||||
//event
|
//event
|
||||||
function updateEvent(vnode, key, value) {
|
function updateEvent(vnode, key, value) {
|
||||||
var element = vnode.dom
|
var element = vnode.dom
|
||||||
var callback = function(e) {
|
var callback = typeof onevent !== "function" ? value : function(e) {
|
||||||
var result = value.call(element, e)
|
var result = value.call(element, e)
|
||||||
if (typeof onevent === "function") onevent.call(element, e)
|
onevent.call(element, e)
|
||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
if (key in element) element[key] = typeof value === "function" ? callback : null
|
if (key in element) element[key] = typeof value === "function" ? callback : null
|
||||||
else {
|
else {
|
||||||
var eventName = key.slice(2)
|
var eventName = key.slice(2)
|
||||||
if (vnode.events === undefined) vnode.events = {}
|
if (vnode.events === undefined) vnode.events = {}
|
||||||
|
if (vnode.events[key] === callback) return
|
||||||
if (vnode.events[key] != null) element.removeEventListener(eventName, vnode.events[key], false)
|
if (vnode.events[key] != null) element.removeEventListener(eventName, vnode.events[key], false)
|
||||||
if (typeof value === "function") {
|
if (typeof value === "function") {
|
||||||
vnode.events[key] = callback
|
vnode.events[key] = callback
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue