我正在使用Nodejs和Expressjs和Kraken,我需要在索引上添加产品时显示消息,但我尝试了很多次用于配置,但消息仍然没有按我的预期出现。这是我的 config.js:
var flash = require('connect-flash');
app = module.exports = express();
app.use(kraken(options));
//flash
app.use(flash());
app.use(function (req, res, next) {
res.locals.messages = require('express-messages')(req, res);
next();
});
我的 Controller :
router.post('/somePath', function (req, res) {
//something to do to add
res.flash('messages','Add success!!')
res.render('path/index');
});
我的index.dust文件:
`{>"layouts/master" /}
{<body}
{messages|s}
// body goes here
{/body}
`
最佳答案
你已经非常接近答案了。
这一行
res.locals.messages = require('express-messages')(req, res);
在 messages
中存储一个函数,该函数将 Flash 消息输出为 html 片段。
res.locals
由express 与用于渲染模板的模型合并。
现在您只需要一种从dust 模板中调用此函数的方法。
这样做:
{messages|s}
实际上并不调用该函数。您需要像调用上下文助手一样调用它:
{#messages /}
您还有最后一个障碍需要清除。
express-messages
期望的函数签名与dust 提供的不同,因此您必须将其包装在辅助函数中(在您的 server.js 文件中):
app.use(flash());
app.use(function (req, res, next) {
var messages = require('express-messages')(req, res);
res.locals.messages = function (chunk, context, bodies, params) {
return chunk.write(messages());
};
next();
});
关于javascript - 如何在 Node 上的 .dust 文件上使用 connect-flash 和 express-messages 显示消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39829177/