Lungo.View.Template.js 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. /**
  2. * Lungo Template system
  3. *
  4. * @namespace Lungo.View
  5. * @class Template
  6. *
  7. * @author Javier Jimenez Villar <javi@tapquo.com> || @soyjavi
  8. * @author Guillermo Pascual <pasku@tapquo.com> || @pasku1
  9. */
  10. Lungo.View.Template = (function(lng, undefined) {
  11. var ERROR = lng.Constants.ERROR;
  12. var _templates = {};
  13. /**
  14. * Create a new databinding template based on a <markup>
  15. *
  16. * @method create
  17. *
  18. * @param {String} Id of the new databinding template
  19. * @param {String} <markup> of the new databinding template
  20. */
  21. var create = function(id, markup) {
  22. _templates[id] = markup;
  23. };
  24. /**
  25. * Returns the existence of a certain Id databinding template
  26. *
  27. * @method exists
  28. *
  29. * @param {String} Id of the databinding template
  30. * @return {Boolean} true if exists, false if not.
  31. */
  32. var exists = function(id) {
  33. return (_templates[id]) ? true : false;
  34. };
  35. /**
  36. * Returns the instance of a certain Id databinding template
  37. *
  38. * @method get
  39. *
  40. * @param {String} Id of the databinding template
  41. * @return {String} Markup of template
  42. */
  43. var get = function(id) {
  44. return _templates[id];
  45. };
  46. /**
  47. * Performs databinding process for a data set and a given template
  48. *
  49. * @method render
  50. *
  51. * @param {String} Element selector for showing the result of databinding
  52. * @param {String} Databinding Template Id
  53. * @param {Object} Data for binding
  54. */
  55. var render = function(element, template_id, data) {
  56. if (lng.View.Template.exists(template_id)) {
  57. var container = lng.dom(element);
  58. container.html(this.markup(template_id, data));
  59. } else {
  60. throw new Error(ERROR.BINDING_TEMPLATE + template_id);
  61. }
  62. };
  63. /**
  64. * Performs databinding process for a data set and a given template
  65. *
  66. * @method markup
  67. *
  68. * @param {String} Databinding Template Id
  69. * @param {Object} Data for binding
  70. */
  71. var markup = function(template_id, data) {
  72. var template_markup = this.get(template_id);
  73. return lng.View.Template.Binding.process(template_markup, data);
  74. };
  75. /**
  76. * Performs databinding process for a data set and a given html
  77. *
  78. * @method html
  79. *
  80. * @param {String} Markup for binding
  81. * @param {Object} Data for binding
  82. */
  83. var html = function(markup, data) {
  84. return lng.View.Template.Binding.process(markup, data);
  85. };
  86. return {
  87. create: create,
  88. exists: exists,
  89. get: get,
  90. render: render,
  91. markup: markup,
  92. html: html
  93. };
  94. })(Lungo);