假设我有一个名为myscript.js
的外部javascript文件。它声明了一个名为headArr
的变量,它是一个数组。
headArr = [`id`,`firstname`,`lastname`,`company`,`salary`];
在index.pug
中,我有一个包含:
script
include ../public/script/myscript.js
我使用each
次迭代来读取数组的每个成员。
ul
each val in headArr
li= val
它返回/显示it can't read headArr.length return undefined
答案 0 :(得分:0)
然后可能包括你的脚本服务器端是一个选项吗?
// myscript.js
export const headArr = [`id`,`firstname`,`lastname`,`company`,`salary`];
// Where you do your rendering
import { headArr } from myscript.js
...
await ctx.render(index, { headArr });
Pug允许您将变量作为第二个参数传递,当呈现{ test: "something" }
变为window.test
时,该参数将绑定到窗口。 (ctx.render只是执行已生成的compiledTemplate-function pug);
答案 1 :(得分:0)
我可以找到解决方案。感谢@ ippi 在koa.js中,您只能使用require。
对于我的情况: 在您的脚本中添加
const head = [`id`,`firstname`,`lastname`,`company`,`salary`];
module.exports.head = head;
然后,index.js添加
const myScript = require('./public/script/myscript');
然后渲染页面
router.get(`/`, async ctx => {
await ctx.render(`index`,myScript)
});
最后,将每次迭代添加到index.pug文件
tr
each i in head
th= i
答案 2 :(得分:0)
router.get(/, async ctx =>
{ await ctx.render ('index', { headArr: headArr} )
});
在myscript.js文件中,您可以在渲染index.pub时使用此代码。因为pug文件将对象作为输入,您需要在该对象中传递headArr。