- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的 Node js 应用程序具有以下代码,其中我尝试注册一个 Handlebars if-else 逻辑,以便在我的模板文件中使用它。然而,它抛出错误“TypeError:hbs.registerHelper 不是函数”。谁能指出我所犯的错误,并建议如何注册 if - elseif -else 逻辑来执行相等(或比较)检查,以在我的模板中构建决策逻辑?
package.json中的express-handlebars版本是3.0.0
var exp = require('express');
var pth = require('path');
var fcon = require('serve-favicon');
var logger = require('morgan');
var cp = require('cookie-parser');
var bp = require('body-parser');
var exphbs = require('express-handlebars');
var index = require('./routes/index');
var app = express();
exphbs.registerHelper("if", function(conditional, options) {
if (options.hash.desired === options.hash.type) {
options.fn(this);
} else {
options.inverse(this);
}
});
// view engine setup
app.engine('hbs', exphbs({extname: 'hbs', defaultLayout: 'layout', layoutsDir: __dirname + '/views/mylayouts/'}));
app.set('views', pth.join(__dirname, 'views'));
app.set('view engine', 'hbs');
最佳答案
助手只能注册为express-handlebars实例:
var hbs = exphbs.create({
// Specify helpers which are only registered on this instance.
helpers: {
foo: function () { return 'FOO!'; },
bar: function () { return 'BAR!'; }
}
});
或者如果您想动态注册它们。您可以像这样使用实例引用:
hbs.handlebars.registerHelper("superHelper", () => 42);
更进一步,您可能希望在渲染级别覆盖助手。你可以这样做:
app.get('/', function (req, res, next) {
res.render('home', {
showTitle: true,
// Override `foo` helper only for this rendering.
helpers: {
foo: function () { return 'foo.'; }
}
});
});
编辑:
添加 if
帮助器:
app.engine('hbs', exphbs({
extname: 'hbs',
defaultLayout: 'layout',
layoutsDir: __dirname + '/views/mylayouts/',
helpers: {
if: function(conditional, options) {
if (options.hash.desired === options.hash.type) {
options.fn(this);
} else {
options.inverse(this);
}
}
}
}));
关于javascript - 在 Node js 应用程序中使用句柄时,将 TypeError 作为 registerHelper 不是一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41931448/
我设置了 Helm 柄和 Helm 柄。我有tiller-deploy。昨天,我可以定期运行了。但今天我收到此错误消息 Error: could not find a ready tiller pod
我以前已将分er安装到特定的 namespace 中。 我设置了一个环境变量来设置'tiller'命名空间-但我不记得该环境变量的名称-而且似乎无法通过网络搜索找到它。 这是什么 key ? 最佳答案
当我在 View 模型中使用如下界面时 class MainViewModel @ViewModelInject constructor( private val trafficImagesR
我正在尝试找到如何在某个 fragment 相关场景中定义 Hilt 的解决方案。我有以下设置: Activity 父 fragment 1 子 fragment 1 子 fragment 2 ...
Hilt 指出如果没有@Provides 注解就不能提供这个接口(interface): interface PlannedListRepository { fun getAllLists()
我的问题非常简单明了:两个注释/示例之间有什么区别: 例子一 @Singleton class MySingletonClass() {} @Module @InstallIn(FragmentCom
我是一名优秀的程序员,十分优秀!