Created
October 21, 2016 01:31
-
-
Save positlabs/f413bcdb937b1db6e7590a2d801f1c86 to your computer and use it in GitHub Desktop.
Component base with some convenience methods
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
http://x-tags.org/docs | |
usage: | |
const ComponentBase = require('./component-base') | |
xtag.register('x-foo', { | |
prototype: ComponentBase.prototype, | |
} | |
*/ | |
const ComponentBase = xtag.register('component-base', { | |
lifecycle: { | |
created(){ | |
this.$el = $(this) | |
}, | |
}, | |
methods: { | |
/* | |
element scoped jquery selector | |
usage: | |
this.$('.thing') | |
*/ | |
$(selector){ | |
return this.$el.find(selector) | |
}, | |
/* | |
accepts a hash of html events | |
{ | |
'HTMLEventName selector': 'handlerName', | |
'click .button': 'clickHandler' | |
} | |
*/ | |
delegateEvents(events){ | |
events = events || this.events | |
Object.keys(events).forEach((key, index) => { | |
var handlerName = events[key] | |
var delimited = key.split(' ') | |
var evt = delimited.shift() | |
delimited = delimited.join(' ') | |
this.$el.delegate(delimited, evt, e => { this[handlerName](e) }) | |
// console.log(delimited, evt, this[handlerName]) | |
}) | |
} | |
} | |
}) | |
module.exports = ComponentBase |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment