【发布时间】:2021-01-27 03:14:12
【问题描述】:
我正在使用 node.js、express、mysql、bootstrap 和 handlebars 构建数据库表和其他 webapp 功能的可视化渲染。
我有一个 pages.js 文件,可以像这样呈现我的实习.hbs 文件:
res.render('internships', {
user: req.user,
jobs: req.internships
});
稍后我将在我的 hbs 文件中的脚本中访问作业,作业是如下所示的 json:
[
{
job_id: 1,
company_name: 'Morgan Stanley',
internship_title: '2021 Technology Summer Analyst Program',
location: 'New York City',
link: 'https://morganstanley.tal.net/vx/lang-en-GB/mobile-0/brand-2/xf-3786f0ce9359/candidate/so/pm/1/pl/1/opp/9768-2021-Technology-Summer-Analyst-Program-New-York/en-GB'
},
{
job_id: 2,
company_name: 'Five Rings',
internship_title: 'Software Developer Intern ',
location: 'New York City',
link: 'https://jobs.jobvite.com/fiverings/job/o1OAcfwl'
},
{
job_id: 3,
company_name: 'DRW',
internship_title: 'Software Developer Intern',
location: 'Chicago',
link: 'https://drw.com/careers/job/1350323'
}
]
由于作业是从其他地方的数据库中的表返回的 json,因此我想根据 db 表中的行数在表中使用可变数量的行来呈现该表。所以我有一个创建行的for循环,我试图用来自json的信息填充单元格:
<script>
var table = document.getElementById("test");
var len = {{jobs.length}};
for (var i = 0; i < len; i++){
// Create an empty <tr> element and add it to the last position of the table:
var row = table.insertRow();
// Insert new cells (<td> elements) at the 1st and 2nd position of the "new" <tr> element:
var cell1 = row.insertCell(0);
var cell2 = row.insertCell(1);
var cell3 = row.insertCell(2);
var cell4 = row.insertCell(3);
var working = "{{jobs.0.company_name}}";
cell1.innerHTML = working;
cell2.innerHTML = "NEW CELL2";
cell3.innerHTML = "NEW CELL2";
cell4.innerHTML = "NEW CELL2";
}
</script>
忽略单元格 2-4,我希望单元格 1 根据循环的 i 从 json 访问 company_name。所以这段代码有效,但当然它 puts Morgan Stanley in the cell each time 因为我将“0”元素硬编码到字符串中。
相反,我想改为 {{jobs.i.company_name}}。当我替换工作时 工作和 cell1 系:
var desired = "jobs." + i + ".company_name";
cell1.innerHTML = "{{" + desired + "}}";
我刚收到blank cells,没有显示公司名称。
如果我将 curleys 放在所需的 var 声明行中,
var desired = "{{jobs" + "." + i + ".company_name}}";
它不允许我连接 +i 部分,因为它会在“作业”之后立即开始读取卷曲表达式。我得到这个错误的一部分]3 说它在句点之后需要一个标识符并且不能执行 i 连接。
我需要弄清楚如何根据我之前放置的 json 构建一个中间带有 i 变量、0、1 或 2 的花括号括起来的字符串语句,而不是在我之前尝试解析花括号完成构建字符串。
【问题讨论】:
-
在您开始解决输出
company_name的问题之前,我建议您重写您的模板,以便它使用模板语言(Handlebars)来创建您的HTML。您不应该设置元素的.innerHTML。这就是 Handlebars 应该为您做的。 -
是的,好电话,我也得出了这个结论。我对什么是车把的理解肯定是脱节了,我应该先补救
标签: javascript html node.js web handlebars.js