I want to render some json data using HTML template.
I haven’t started implementing anything yet, but I would like to be able to “set” values of data from json to html element which contains template for one record, or to render some collection of items using some argument which is template html for each item, but also to be able to get JSON object back in same format as source JSON which was used to render item (I want my initial JSON to contain some more information about behavior of record row, without the need to make ajax request to check if user can or can’t do something with this record, and not all of this info is visible in template).
I know that I could make hidden form with an input element for each property of object to store, and mapper function to/from JSON, but it sounds like overkill to me, and I don’t like that, I want some lighter “envelope”.
I was wondering is there some JS library that can “serialize” and “deserialize” JSON objects into html so I can store it somewhere in DOM (i.e. in element which contains display for data, but I want to be able to store additional attributes which don’t have to be shown as form elements)?
UPDATE As first answer suggested storing JSON in global variable, I also have thought about that, and my “best” mental solution was to make JavaScript module (or jQuery plugin) which would do “mapping” of JSON to html, and if not possible to store values in html then it can store them in internal variable, so when I want to “get” data from html element it can pull it from its local copy. I want to know is there better way for this? If there is some library that stores this info in variable, but does real-time “binding” of that data with html, I would be very happy with that.
UPDATE 2 This is now done using http://knockoutjs.com/, no need to keep json in DOM anymore, knockout does the JSON<=>HTML mapping automatically
Why not store it as nature intended: as a javascript object? The DOM is a horrible place.
That said, jQuery has the data method that allows just this.