2012-12-23 2 views
0

quelqu'un peut me dire la différence entre "< %%" "<%"Quelle est l'utilisation de <%% dans les modèles de soulignement?

<%%= hello %> 

<%= hello %> 

je ne pouvais pas trouver réponse correcte à la recherche google.

Toutes les explications seront utiles :)

**Index.html** 

<div id="container">Loading...</div> 
<script type="script/template" id="hello_sen"> 
<%= hello %> 
</script> 

**Backbone View** 

class Bckbone.Views.EntriesIndex extends Backbone.View 

initialize: -> 
    @template = _.template($("#hello_sen").html()) 

render: -> 
    datas = {hello: "Senthil"} 
    $(@el).html(@template(datas)) 
    this 
+1

Alors que vous pouvez changer les [délimiteurs en trait de soulignement en déclarant une interpolation regex] (http://underscorejs.org/#template) qui ressemble à une faute de frappe pour moi. – steveax

+0

Pas de Steveax, ce n'est pas une faute de frappe. S'il vous plaît vérifier cette capture d'écran: http://awesomescreenshot.com/06dqqsq78, si j'écris "<%", il me jette variable non trouvée erreur, même si j'écris "<%%", je peux obtenir des résultats corrects. (J'ai vu "<%%" dans d'autres projets) – Senthil

+0

Est-ce que quelque chose a changé les paramètres du modèle Underscore? Est-ce que quelque chose sur le serveur prétraite les templates avant que Underscore les voit? Et comment dit "variable non trouvée"? Le client ou le serveur? –

Répondre

1

Vous obtenez l'erreur dans la capture d'écran ci-dessus vous avez publié parce que vous utilisez modèle de trait de soulignement de style erb (par défaut) à l'intérieur d'un fichier erb.

Le code à l'intérieur de <% et %> est analysé sous forme de code Ruby.

Vous devez utiliser d'autres chaînes d'interpolation, comme décrit here. Backbone.js se fonde sur underscore.js pour la création de modèles.

0

<% est une convention en trait de soulignement. < %% échappe aux tags ERB pour les rails. Vous pouvez modifier les paramètres de underscore:

_.templateSettings = { 
    interpolate: /\{\{\=(.+?)\}\}/g, 
    evaluate: /\{\{(.+?)\}\}/g 
}; 

Ou utilisez < %% pour échapper à une ligne par ligne. Échapper se termine toujours avec%>

Plus ici: Rails with Underscore.js Templates

0

Ma solution préférée: Déplacez le modèle à un partiel, et ne comprennent pas le .erb après .html dans le nom du fichier. Ensuite, les rails n'analyseront pas ERB dans ce fichier.

Questions connexes