2013-01-06 1 views
1

Je souhaite passer le modèle jade au navigateur à partir d'un modèle jade sur le serveur.Empêcher le jade du navigateur côté jade d'interpréter le modèle de jade

Mon problème est que le modèle de jade sont interprétées par le serveur au moment ...

Voici comment je déclare le modèle:

script#entry-row(type='text/template') 
    tr 
    td= number 
    td= sum + '€' 
    td= description || '' 
    td= moment(date, 'YYYY-MM-DDTHH:mm:ss:SSSZ').format('dddd DD MMMM YYYY') 
    td 
     span.label= category 
    td 
     input(type='checkbox', disabled='disabled', checked=shared) 

La seule solution que j'ai trouvé d'ajouter un tuyau à la ligne commence mais ce n'est pas une bonne façon:

script#entry-row(type='text/template') 
    | tr 
    | td= number 
    | td= sum + '€' 
    | td= description || '' 
    | td= moment(date, 'YYYY-MM-DDTHH:mm:ss:SSSZ').format('dddd DD MMMM YYYY') 
    | td 
    |  span.label= category 
    | td 
    |  input(type='checkbox', disabled='disabled', checked=shared) 

D'autres idées?

+0

Je préfère la syntaxe de tuyau. Un peu plus lent à taper mais assez facile à lire et à comprendre. En passant, merci de partager la solution. J'ai passé presque une demi-heure à la recherche d'une solution possible à ce problème. –

Répondre

1

Je suis récemment sur ce qui hantent depuis plusieurs jours, et je trouver une meilleure solution.

Vous pouvez renommer votre jade modèle partiel à l'extension html, et l'inclure dans la page principale de jade

. Donc jade ne va pas essayer de compiler les partiels inclus sur le côté serveur, et vous

obtenu ce que vous voulez sur le côté du navigateur.

Voici mon exemple de codage:

index.jade:

extends layout 

block content 
    .container 
    .header 
     a= title 
     .input-append 
     input.input-medium(type="text", placeholder="电子邮箱") 
     button.btn(id='subscribe') 订阅 
     .clear 
    .row-fluid 
     .span8 
     ul.tweets 
     .span3 

     ul.users 


    script#tweet-template(type='template') 
    include templates/tweet.html 

et les partielles templates/tweet.html

li 
    .media 
    img.pull-left(src=tweet.user_img) 
    .media-body 
     h5.media-heading= tweet.user_name 
     p.text 
     span #{tweet.text} 
     - if (tweet.pic_name != '') { 
      br 
      img.img-polaroid(src='/images/tweets/' + tweet.pic_name + '_thumb.jpg', class='thumb_img') 
      img.img-polaroid(src='/images/tweets/' + tweet.pic_name + '_middle.jpg', class='middle_img') 
     - } 
     p.tail 
     - if (tweet.pic_name != '') { 
      a(href='/images/tweets/' + tweet.pic_name + '_large.jpg') 查看大图 
     - } 
     span.time #{tweet.create_at} 
     转发(#{tweet.reposts_count}) 评论(#{tweet.comments_count}) 
+0

Je n'ai pas le temps d'essayer mais si c'est le travail c'est très bien. Merci – Charles

0

Utilisez express? Une solution possible pourrait être . Voir aussi la discussion here.

Vous pouvez brancher des actifs dans Express:

assets.on('complete', function() { 
    var app = express.createServer(); 
    app.configure(function() { 
     app.use(assets); // that's all you need to do 
    }); 
    app.listen(8000); 
}); 

Pour créer vos actifs Jade:

var assets = new AssetRack([ 
    new rack.JadeAsset({ 
     url: '/templates.js', 
     dirname: __dirname + '/templates' 
    }) 
]);