Skip to content

Instantly share code, notes, and snippets.

@positlabs
Created October 21, 2016 01:31
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save positlabs/f413bcdb937b1db6e7590a2d801f1c86 to your computer and use it in GitHub Desktop.
Save positlabs/f413bcdb937b1db6e7590a2d801f1c86 to your computer and use it in GitHub Desktop.
Component base with some convenience methods
/*
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