La documentation pour les modèles est partielle, j'ai regardé la source.
La fonction _.template a 3 arguments:
- Texte de chaîne : la chaîne de modèle
- Données d' objet : les données d'évaluation
- Paramètres d' objet : paramètres locaux, le _.templateSettings est l'objet de paramètres globaux
Si aucune donnée (ou null) n'est donnée, une fonction de rendu sera retournée. Il a 1 argument:
- Données d' objet : identiques aux données ci-dessus
Il y a 3 modèles d'expression régulière et 1 paramètre statique dans les paramètres:
- RegExp évalue : "<% code%>" dans la chaîne de modèle
- Interpolation RegExp : "<% = code%>" dans la chaîne de modèle
- RegExp échapper : "<% -% de code>"
- Variable de chaîne : facultatif, le nom du paramètre de données dans la chaîne de modèle
Le code dans une section d' évaluation sera simplement évalué. Vous pouvez ajouter une chaîne de cette section avec la commande __p + = "mystring" au modèle évalué, mais ce n'est pas recommandé (ne fait pas partie de l'interface de modèles), utilisez la section interpoler à la place. Ce type de section sert à ajouter des blocs comme if ou for au modèle.
Le résultat du code dans la section interpoler sera ajouté au modèle évalué. Si null est renvoyé, une chaîne vide sera ajoutée.
La section d' échappement échappe html avec _.escape sur la valeur de retour du code donné. Donc, c'est similaire à un _.escape (code) dans une section interpolée , mais il s'échappe avec \ les espaces comme \ n avant de passer le code au _.escape . Je ne sais pas pourquoi est-ce important, c'est dans le code, mais cela fonctionne bien avec l' interpolation et le _.escape - qui n'échappe pas aux caractères d'espace blanc - aussi.
Par défaut, le paramètre de données est transmis par une instruction with (data) {...} , mais ce type d'évaluation est beaucoup plus lent que l'évaluation avec la variable nommée. Nommer les données avec le paramètre variable est donc quelque chose de bien ...
Par exemple:
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);
résultats
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"
Vous pouvez trouver ici plus d'exemples sur la façon d'utiliser le modèle et de remplacer les paramètres par défaut:
http://underscorejs.org/#template
En chargeant le modèle, vous avez de nombreuses options, mais à la fin, vous devez toujours convertir le modèle en chaîne. Vous pouvez le donner comme une chaîne normale comme l'exemple ci-dessus, ou vous pouvez le charger à partir d'une balise de script et utiliser la fonction .html () de jquery, ou vous pouvez le charger à partir d'un fichier séparé avec le plugin tpl de require.js .
Une autre option pour construire l'arbre dom avec laconique au lieu de modeler.