A documentação para o modelo é parcial, observei a fonte.
A função _.template possui 3 argumentos:
- String de texto : o modelo de cadeia
- Dados do objeto : os dados da avaliação
- Configurações do objeto : configurações locais, o _.templateSettings é o objeto de configurações globais
Se nenhum dado (ou nulo) for fornecido, uma função de renderização será retornada. Tem 1 argumento:
- Dados do objeto : iguais aos dados acima
Existem 3 padrões de regex e 1 parâmetro estático nas configurações:
- RegExp avalie : "<% code%>" na cadeia de modelo
- RegExp interpola : "<% = code%>" na cadeia de modelo
- RegExp escape : "<% - code%>"
- Variável de cadeia : opcional, o nome do parâmetro de dados na cadeia de modelo
O código em uma seção de avaliação será simplesmente avaliado. Você pode adicionar string desta seção com o comando __p + = "mystring" ao modelo avaliado, mas isso não é recomendado (não faz parte da interface de modelagem), use a seção interpolar em vez disso. Este tipo de seção é para adicionar blocos como se ou para o modelo.
O resultado do código na seção interpolar será adicionado ao modelo avaliado. Se nulo for devolvido, a sequência vazia será adicionada.
A seção de escape escapa html com _.escape no valor de retorno do código fornecido. Portanto, a sua semelhante do que um _.escape (código) em um interpolate secção, mas escapa com \ os caracteres em branco como \ n antes de passar o código para o _.escape . Não sei por que isso é importante, está no código, mas funciona bem com o interpolar e _.escape - que não escapa aos caracteres do espaço em branco - também.
Por padrão, o parâmetro data é passado por uma instrução with (data) {...} , mas esse tipo de avaliação é muito mais lento que a avaliação com a variável nomeada. Portanto, nomear os dados com o parâmetro variável é algo bom ...
Por exemplo:
var html = _.template(
"<pre>The \"<% __p+=_.escape(o.text) %>\" is the same<br />" +
"as the \"<%= _.escape(o.text) %>\" and the same<br />" +
"as the \"<%- o.text %>\"</pre>",
{
text: "<b>some text</b> and \n it's a line break"
},
{
variable: "o"
}
);
$("body").html(html);
resultados
The "<b>some text</b> and
it's a line break" is the same
as the "<b>some text</b> and
it's a line break" and the same
as the "<b>some text</b> and
it's a line break"
Você pode encontrar aqui mais exemplos de como usar o modelo e substituir as configurações padrão:
http://underscorejs.org/#template
Ao carregar o modelo, você tem muitas opções, mas no final você sempre precisa converter o modelo em string. Você pode atribuí-la como sequência normal, como no exemplo acima, ou carregá-la a partir de uma tag de script e usar a função .html () do jquery, ou carregá-la de um arquivo separado com o plugin tpl do require.js .
Outra opção para construir a árvore de dom com lacônico em vez de modelagem.