Data Binding with jQuery
Since I've come from the land of desktop application development, there are a few concepts that I don't think quite "made the voyage" from desktop/thick-client development to web/thin-client development. The concept of "data binding" is completely lost in my opinion in the land of Javascript and HTML (not to mention the concept of "controls" to begin with).A few weeks ago while exploring a couple other concepts for how to improve our overall frontend development at Slide I prototyped a means of "databinding" controls, or at the very least DOM elements to data-providing Javascript functions.I've posted an example here of some of the data binding code I've written for experimentation purposes. In the example page linked, there is a <ul> tag that is "bound" to a Javascript function, the Javascript function creates an array of associative arrays inline (it could very well be powered by some AJAX-oriented Javascript with minor adjustments). Using the results of the "databind" function specified on the bindable element, it creates a set of child nodes to attach to the parent list. In effect, the following code:
Will generate the following DOM tree, after the "bind()" function has been run on page load:
- List Item #1 OMG
- List Item #2
- List Item #3
Since the code is relatively simple (in my opinion) I figured I would throw it out there in all it's minimalistic glory and get some general feedback on the concept before I go "all out" and create a full-on jQuery extension based off of the linked prototype above. I'm trying to think of ways to make it more powerful as well, built-in support for binding to the results of an asynchrounous call to a URL that returns JSON that would then create the elements is at the top of my TODO list at this point. Feedback, flames and actual useful critiques are all welcome; I'll be sure to post again once I have the time to create the jQuery extension for binding, this however is more experimental quality (i.e. don't use it, i'm not).
What do you think?
Did you know! Slide is hiring! Looking for talented engineers to write some good Python and/or JavaScript, feel free to contact me at tyler[at]slide
academia activerecord ada amber android apture bart bdd beer birthday blimpy brainfuck buzzwords c campdevops cheetah chrome ci cocoa conference continuousdeployment cucumber devops documentation drupal evernote facebook family food fosdem fosdem2012 ganglia gerrit git github gla graphite home homosex hubboard hudson identica javascript jekyll jenkins jenkinsci jenkinsconf juctokyo justintv learnings linux literature livecoding lookout media meetups microblogging miscellaneous mono offtopic opbart opengrok openmoko opensource opinion ops parrots photos presentation programming protesting puppet puppetconf puppetconf2012 python ragequit rails rdoc redis resin ri ruby running scale scale10x screencast security slide smalltalk soapopera software development sonic ssh stupidhacks tablet tor tripdiary twitter twos usenet vagrant wtf
