console
function Model(value) {
this._value = typeof value === 'undefined'?'':value
this._listeners = []
};
Model.prototype.set = function(value) {
var self =this
self._value = value
setTimeout(() =>{
self._listeners.forEach( listener => {
listener.call(self, value)
})
})
};
Model.prototype.watch = function(listener) {
this._listeners.push(listener)
};
Model.prototype.bind = function(node) {
this.watch((value)=> {
node.innerHtml = value
})
};
function Controller(callback) {
var models = {}
var views = Array.prototype.slice.call(document.querySelectorAll('[data-bind]'),0)
views.forEach( view => {
var modelName = view.getAttribute('data-bind');
models[modelName] = models[modelName]||new Model()
debugger
(models[modelName] = models[modelName]||new Model()).bind(view);
})
callback.call(this, models)
}
new Controller((models) => {
console.log(models)
var date = new Date()
models.hour.set(date.getHours())
})
<span data-bind='hour'></span>:<span data-bind='minute'></span>:<span data-bind='second'></span>