Рассмотрим простою задачу:
Есть массив объектов, у которых есть id, заголовок и флаг (вкл. / выкл.)
Нужно вывести все элементы массива в виде списка (галка и поле для ввода)
Простой пример использования шаблонизатора Underscore.js
25.02.2014
В этом примере jQuery используется только для удобства.
HTML файл
Код - пример #1 | |
1 |
<!DOCTYPE HTML> <html lang="en-US"> <head> <meta charset="UTF-8"> </head> <body> <div class="container"> <div id="lines"> <ol class="list-unstyled"></ol> </div> </div> <!--Template--> <!-- <%= key %> - выводим значение "как есть" <%- item.name %> - экранируем значение --> <script type="foo/bar" id='tmpl_ListItem'> <% // repeat items _.each(items,function(oToDo, key, list){ var sDone = oToDo.done?'checked="checked" ':''; %> <li data-id="<%= oToDo.id %>"> <div class="itm"> <input class="cbDone" type="checkbox" <%= sDone %>/> <input class="form-control" type="text" value="<%- oToDo.text %>" /> </div> </li> <% }); %> </script> <!--Template--> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js" type="text/javascript"></script> <script src="js/underscore-min.js" ></script> <script src="js/main.js" ></script> </body> </html> |
Js файл
Код - пример #1 | |
1 |
$(function(){ var lines = [], template = $("#tmpl_ListItem").html(); lines.push({ id : 1, text : 'Test1', done : false }, { id : 2, text : 'Test2', done : true }, { id : 3, text : 'Test3', done : false }); $("#lines").html(_.template(template,{items:lines})); }); |
Дополнительно, пример того, как можно подгружать шаблон динамически:
1 |
var template; $.get('/templates/main.inc', function(template_text){ template = _.template(template_text); }); |