我是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)客户端评估此呼叫的最佳方式是什么?
谢谢
你需要在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)}
但最好将它放在模板之外并将引用传递给helpers对象
我知道这很老了,但是当你在玉器中声明一个函数时,你需要这样做
script.
不
script
这个时期有所不同,并且允许jade接受它实际上是一段代码,而不是HTML.