Merge pull request #1451 from darsain/update-event

Improve event binding
This commit is contained in:
Leo Horie 2016-12-04 23:32:08 -05:00 committed by GitHub
commit c544390d43

View file

@ -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