2013-07-01 4 views
3

Ci-dessous mixinmodèle Jade: nid mixin

mixin form(title, action) 
    legend title 
    form.form-horizontal(method='post', action=action) 
     label Name: 
     input(type='text',name=Name,id=Name) 

rend à

<legend>title</legend> 
<form method="post" action="save" class="form-horizontal"> 
    <label>Name:</label> 
    <input type="text"/> 
</form> 

Maintenant, j'extrait l'étiquette et sur le terrain dans un autre mixin

mixin form(title, action) 
    legend title 
    form.form-horizontal(method='post', action=action) 

mixin field(name) 
    label #{name}: 
    input(type='text',name=name,id=name) 

et utilise comme

mixin form("xxxx", "save") 
    mixin field('Name') 

Cette erreur donne

>> Line 1209: Unexpected string 
Warning: Jade failed to compile test.jade. Use --force to continue. 

est-il possible d'imbriquer mixin et comment faire rendre comme la première sortie.

Merci

Répondre

1

Cela devrait être possible. Au moins le gars ici était capable de.

https://github.com/pugjs/pug/issues/1103

+2

Ce gars du lien est très laconique mais il a raison. En fait, j'ai passé du temps à essayer de comprendre ce qu'il voulait dire, alors peut-être que cela sera utile pour quelqu'un. ** Vous devez ajouter une instruction de bloc à la fin de la déclaration du mélange contenant. ** –

+0

Avez-vous un échantillon de code? –

+0

Je ne suis plus dans le mixin mais je pense que vous devez juste ajouter "block" à la fin comme l'a dit Oscar. Comme le lien montre, mais seulement une fois. https://github.com/jadejs/jade/issues/1693 – Avec

1
mixin field(name) 
    label #{name}: 
    input(type='text',name='#{name}',id='#{name}') 

mixin forms(title, action, name) 
    legend #{title} 
    form.form-horizontal(method='post', action='#{action}') 
    block 
    +field(name) 

test Appel

+forms('*TheTitle*', '*TheAction*' , '*TheName*') 

Renders

<legend>TheTitle</legend> 
<form method="post" action="TheAction" class="form-horizontal"></form> 
<label>TheName:</label> 
<input type="text" name="TheName" id="TheName"/> 

Vous devez définir les mixins séparément, puis appeler le mixage 'field' dans la définition du mix 'forms'.