我是nodejs的新手并尝试为html内容创建一个jade文件 myfile.jade
:这是文件的内容:
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)}
但是,在运行它时会引发以下错误:
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 ;
如果我删除console.log,它会抛出错误说:
TypeError: mweb/views/collections.jade:18
> 18| a(href="/collection/#{item.name}") #{capitalize(itemName)}
据我所知,在jade编译期间调用了大写,并且该函数不可用,因为脚本标记也被编译到html中 . 在a)服务器端或b)客户端评估此呼叫的最佳方式是什么?
谢谢
3 回答
你需要在jade的范围内定义函数,而不是在你生成的JS中定义:
但最好将它放在模板之外并将引用传递给helpers对象
我知道这很老了,但是当你在玉器中声明一个函数时,你需要这样做
不
这个时期有所不同,并且允许jade接受它实际上是一段代码,而不是HTML .
通过这个
#{capitalize(itemName)}
,您正在尝试调用从控制器(后端)传递给模板的函数 .例如 (/routes/index.js) :
在 index.jade
哪里
是前面定义的函数,它接受一些参数 .