Aqui vou mostrar como usar o template javascript underscore dentro de templates jade.
Primeiro vamos criar os templates jade
layouts/main.jade
doctype html html head meta(http-equiv='http-equiv', content-type='Content-type', content='text/html; charset=utf-8') link(rel='stylesheet', href='/stylesheets/foundation.css') link(rel='stylesheet', href='/stylesheets/foundation/icons/foundation-icons.css') link(rel='stylesheet', href='/stylesheets/style.css') title Mobile Mind block title body header .row .large-12.columns nav.top-bar(data-topbar) ul.title-area li.name h1 a Delicious Food li.toggle-topbar.menu-icon a span menu section.top-bar-section ul.left li.divider li.has-form .row.collapse .large-8.small-9.columns input(type='text', placeholder="Find Stuff...") .large-4.small-3.columns a.alert.button.expand.btn-search(href="#") Search ul.right li.divider li.has-dropdown a(href="#") Categorias ul.dropdown each it in ['A', 'B', 'C', 'D', 'E'] li a(href="#") Categoria #{it} block content footer.row .large-12.columns hr .row .large-6.columns p @ Copyright Mobile Mind .large-6.small-12.columns ul.inline-list.right li a(href="http://www.mobilemind.com.br", target="_blank") www.mobilemind.com.br script(src="js/script.js")
index.jade
extends layouts/main block title | Store block content .row .large-4.small-12.columns img(src="http://lorempixel.com/500/500/food") .custon-panel-alert h3 Delicious Food h5.subheader | Come eat here!! a(href="#") .custon-panel-main h6 99 items in your cart .large-8.columns a(href="#storeItems/50/10") load .large-8.columns .row.items-main .large-8.columns hr .pagination-centered ul.pagination li.arrow.unavailable a(href="#") « li.current a(href="#") 1 each it in [2, 3, 4, 5] li a(href="#") #{it} li.unavailable a(href="#") … each it in [12, 13, 14, 15] li a(href="#") #{it} li.arrow a(href="#") » include extra/item.jade
extra/item.jade
#item_template.hidden .large-4.small-6.columns .item-row .panel.item-header h5 | {{ it.name }} .item-body img(src="http://lorempixel.com/500/500/food") .panel.item-footer .large-5.columns h6.subheader | {{ it.price }} .large-7.columns a.button.alert.tiny(href="#") i.fi-shopping-cart.small
Explicando:
Criamos um arquivo de layout principal, que é o main.jade. Depois um index, que usa o layout principal.. e depois o item.jade.. que contém nosso template que será usada no handlebars. Agora, no script.js vamos criar o código de carregamento da listagem de items, via ajax:
_.templateSettings = { interpolate: /\{\{(.+?)\}\}/g } template = _.template $('#item_template').html() el = '.items-main' $.ajax url: ContextPath + "/store/items?" + $.param {offset: 0, max: 10} dataType: 'json' success: (data, textStatus, jqXHR) -> for it in data $(el).append template({it: it}) error: (jqXHR, textStatus, errorThrown) -> console.log textStatus
Atenlção!
Veja a alteração na sintaxe do undercode definida na váriavel templateSettings. Fazendo essa definição podemos usar as váriaveis no jade com {{ variavel }} (igual ao mustache). Também veja que no template definimos uma div com class hidden, pois como é um template não ficará visivel na página.
Para isso fucionar você deve adicionar as fererências para jquery e underscore em seu projeto bem assim como complilar o coffee e jade de algum modo.. Em outro artigo aqui no blog mostro como fazer toda essa integração usando grails e gulp, ou só gulp e html.
Isso é um exemplo estrutural.. então para funcionar tem que modificar algumas coisas.
Até a próxima
Nenhum comentário:
Postar um comentário