-
-
Save bshack/839c00ed7ecc65847c15 to your computer and use it in GitHub Desktop.
(function() { | |
'use strict'; | |
const View = require('./viewBase.js'); | |
new View({ | |
el: document.querySelector('a'), | |
model: {'foo': 'bar'} | |
}); | |
})(); |
(function() { | |
'use strict'; | |
const _ = require('underscore'); | |
module.exports = function(options) { | |
//cache this | |
let self = this; | |
//initialize | |
self.init = function() { | |
self.addListeners(); | |
window.console.log('init', self); | |
}; | |
self.el = document.createElement('div'); | |
//empty model | |
self.model = { | |
}; | |
//set up events | |
self.addListeners = function() { | |
self.el.addEventListener('click', self.eventClick); | |
}; | |
//click event | |
self.eventClick = function(e) { | |
window.console.log(e, self); | |
e.preventDefault(); | |
}; | |
//render the view | |
self.render = function() {}; | |
//extendable view | |
self = _.extend(self, options); | |
// init on instantiation | |
self.init(); | |
// now run render on instantiation | |
self.render(); | |
}; | |
})(); |
I see similarities to BB here. Are you looking to set a base for use with it or in lieu of it? (sorry I haven't used BB in more than a year and I'm like really old)
I see the use of variables on self's instance that could probably be prototypal (faster). Though going balls-in prototypal would inspire more modifications here (making this into a factory, not a constructor) and would be less compatible with BB (if that was the direction you were going).
not looking for any compatiblity, I would see this as a replacement on projects that would not want to use frameworks. Projects where you'd want to use a collection of libraries or leverage native js. Feel free to modify :)
I had to make a fork (couldn't edit). You can follow the link at the top or just go here: https://gist.github.com/gibbitz/8e3d0ad18370f6e1f578
viewBase.js would likely become the base that other views are extended from before being used in usage.js.
Backbone does it like this:
Backbone.View.extend({.....