Je suis nouveau sur nodejs et j'essaye de créer un fichier jade pour le contenu html myfile.jade
: Voici le contenu du fichier:
extends layout
block content
script
function capitalize(s) {
console.log("Testing js exec");
return s.charAt(0).toUpperCase() + s.slice(1);
};
table
- each item in list
tr
td
a(href="/collection/#{item.name}") #{capitalize(itemName)}
Cependant, lors de son exécution, il génère l'erreur suivante:
Error: mweb/views/collections.jade:8
6| script
7| function capitalize(s) {
> 8| console.log("Testing js exec");
9| return s.charAt(0).toUpperCase() + s.slice(1);
10| };
unexpected text ;
Si je supprime console.log, il renvoie l'erreur en disant:
TypeError: mweb/views/collections.jade:18
> 18| a(href="/collection/#{item.name}") #{capitalize(itemName)}
Pour autant que je sache, la majuscule est appelée pendant la compilation de jade et la fonction n'est pas disponible car la balise de script est également compilée dans le html. Quelle est la meilleure façon pour moi de faire évaluer cet appel a) côté serveur ou b) côté client?
THX
Vous devez définir la fonction dans le cadre de jade, pas dans JS vous générez:
block content
- function capitalize(s) { return s.charAt(0).toUpperCase() + s.slice(1); };
table
- var list = ['one', 'two']
- var itemName = 'test test'
- each item in list
tr
td
a(href="/collection") #{capitalize(itemName)}
mais il est probablement préférable de l'avoir en dehors du modèle et de transmettre la référence aux objets d'aide
Je me rends compte que c'est vraiment vieux, mais quand vous déclarez une fonction en jade, vous devez faire
script.
ne pas
script
la période fait la différence et permettra à jade de comprendre qu'il s'agit en fait d'un morceau de code plutôt que de HTML.
Par cette #{capitalize(itemName)}
, vous essayez d'appeler une fonction transmise au modèle depuis le contrôleur (back-end).
Par exemple (/ routes/index.js):
res.render('index', { title: 'Express test', fs : { echo : lang} });
En index.jade
a(href='/register') #{fs.echo('xxx')}
où
lang
est une fonction définie précédemment qui prend un certain paramètre.