Skip to content

Instantly share code, notes, and snippets.

@rndme
Created February 21, 2016 05:20
Show Gist options
  • Save rndme/3b1de91629b38c7ebd7d to your computer and use it in GitHub Desktop.
Save rndme/3b1de91629b38c7ebd7d to your computer and use it in GitHub Desktop.
function ViewModel(rootElement){
rootElement = rootElement || document;
var model = Object.create(null);
function updateElement(elm){
var key = elm.getAttribute("bind"),
pre = elm.getAttribute("pre") || "",
post = elm.getAttribute("append") || "",
prop = elm.getAttribute("prop") || "innerHTML";
requestAnimationFrame(function(){
elm[prop] = unescape(pre) + model[key] + unescape(post);
});
}
model.set = function(k, v) {
if(model[k]===v) return;
model[k]=v;
[].forEach.call(rootElement.querySelectorAll("[bind='"+k+"']"), updateElement );
return model;
};
model.update = function(obj) {
Object.keys(obj).forEach(function(k,i,r) {
model.set(k, obj[k]);
});
return model;
};
return model;
} // end ViewModel()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment