Javascript 快速JS:车把;每一个;标记不显示内容
我使用的是Express JS和Handlebar软件包,实际上我遇到了一些奇怪的事情。我不知道我是否遗漏了什么,希望如此,但我无法找出代码中的错误 我正在使用: 我无法使Javascript 快速JS:车把;每一个;标记不显示内容,javascript,node.js,typescript,express,handlebars.js,Javascript,Node.js,Typescript,Express,Handlebars.js,我使用的是Express JS和Handlebar软件包,实际上我遇到了一些奇怪的事情。我不知道我是否遗漏了什么,希望如此,但我无法找出代码中的错误 我正在使用: 我无法使{{{each}}语句在我的代码中工作 以下是我所拥有的: 视图。ts const Views = { config: { // views template configuration extname: '.hbs', helpers: { mo
{{{each}}
语句在我的代码中工作
以下是我所拥有的:
视图。ts
const Views = {
config: {
// views template configuration
extname: '.hbs',
helpers: {
modulesList: () => {
return appModules.modulesList();
},
foo: () => { return 'FOO!'; },
bar: ['tic', 'tac', 'toe'],
// bar: () => { return ['tic', 'tac', 'toe'] },
}
},
}
// Views is exported
const exphbs = require('express-handlebars');
const views = require('twiice/views.ts');
app.engine('.hbs', exphbs(views.config));
app.set('view engine', '.hbs');
app.set('views', './twiice/views');
<div class="col">
{{#each bar}}
<h6 class="text-light text-uppercase ls-1 mb-1">{{foo}}</h6>
{{/each}}
<h6 class="text-light text-uppercase ls-1 mb-1">Overview</h6>
<h5 class="h3 text-white mb-0">Sales value</h5>
<h6 class="text-light text-uppercase ls-1 mb-1">{{foo}}</h6>
</div>
应用程序ts
const Views = {
config: {
// views template configuration
extname: '.hbs',
helpers: {
modulesList: () => {
return appModules.modulesList();
},
foo: () => { return 'FOO!'; },
bar: ['tic', 'tac', 'toe'],
// bar: () => { return ['tic', 'tac', 'toe'] },
}
},
}
// Views is exported
const exphbs = require('express-handlebars');
const views = require('twiice/views.ts');
app.engine('.hbs', exphbs(views.config));
app.set('view engine', '.hbs');
app.set('views', './twiice/views');
<div class="col">
{{#each bar}}
<h6 class="text-light text-uppercase ls-1 mb-1">{{foo}}</h6>
{{/each}}
<h6 class="text-light text-uppercase ls-1 mb-1">Overview</h6>
<h5 class="h3 text-white mb-0">Sales value</h5>
<h6 class="text-light text-uppercase ls-1 mb-1">{{foo}}</h6>
</div>
home.hbs
const Views = {
config: {
// views template configuration
extname: '.hbs',
helpers: {
modulesList: () => {
return appModules.modulesList();
},
foo: () => { return 'FOO!'; },
bar: ['tic', 'tac', 'toe'],
// bar: () => { return ['tic', 'tac', 'toe'] },
}
},
}
// Views is exported
const exphbs = require('express-handlebars');
const views = require('twiice/views.ts');
app.engine('.hbs', exphbs(views.config));
app.set('view engine', '.hbs');
app.set('views', './twiice/views');
<div class="col">
{{#each bar}}
<h6 class="text-light text-uppercase ls-1 mb-1">{{foo}}</h6>
{{/each}}
<h6 class="text-light text-uppercase ls-1 mb-1">Overview</h6>
<h5 class="h3 text-white mb-0">Sales value</h5>
<h6 class="text-light text-uppercase ls-1 mb-1">{{foo}}</h6>
</div>
{{{#每个酒吧}
{{foo}}
{{/每个}}
概述
销售价值
{{foo}}
实际上,foo
显示在html代码的最后一个h6上,这意味着已加载帮助程序
但是每个
语句都没有为条
显示任何内容
在文件之后:
我看不出有什么不对劲:/
非常感谢你的帮助,我还在学习呢!:)
在此处填写代码:您没有正确使用
栏
帮助程序
是功能。当您想在模板中使用帮助器时,可以在把手表达式中使用它,如{{{uppercase firstName}}
。在这个表达式中,uppercase
是我们定义的帮助程序的标识符,firstName
是数据上下文对象中的一个变量,它将传递给我们的uppercase
帮助程序
表达式{{#each bar}
告诉Handlebar调用数据上下文对象中变量bar
上的
但是,bar
在数据上下文对象中不存在,因为bar
不是我们数据的一部分,而是我们定义的另一个助手。所以我们的问题是:我们如何在同一个把手表达式中调用两个助手
车把有这个问题的答案;它是。它只需要将内部表达式用括号括起来
这意味着将您的代码更新为{{{#each(bar)}
将足以告诉Handlebar,bar
是我们想要调用的帮助程序,并且我们想要将其返回值传递给#each
我已经创建了一个供您参考的文档。您好!谢谢你的编辑,我正在尽我最大的努力学习英语,但我仍然会犯错误。但是非常感谢你的回答,这对我来说是非常清楚和可以理解的!我已经编辑了我的代码,现在它工作得很好。我不明白助手是如何工作的,现在我明白了。非常感谢@文森特:谢谢你的友好回复。我很高兴能帮上忙。