我是 nodejs 的新手,正在尝试为 html 内容 myfile.jade
创建一个 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| };
意外的文字;
如果我删除 console.log,它会抛出错误:
TypeError: mweb/views/collections.jade:18
> 18| a(href="/collection/#{item.name}") #{capitalize(itemName)}
据我所知,在jade编译期间正在调用capitalize,并且该功能不可用,因为脚本标签也被编译到html中。对我来说评估此电话的最佳方式是什么 a) 服务器端或 b) 客户端?
谢谢
最佳答案
你需要在jade范围内定义函数,而不是在你生成的JS中:
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)}
但最好将它放在模板之外并将引用传递给辅助对象
关于 Jade 模板内的javascript函数执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20940860/