【问题标题】:How to display message using connect-flash and express-messages on .dust file on Node如何在节点上的 .dust 文件上使用 connect-flash 和 express-messages 显示消息
【发布时间】:2017-01-01 14:23:48
【问题描述】:

我正在使用 NodejsExpressjsKraken,我需要在索引中添加产品时显示消息,但我尝试了很多次进行配置,但消息仍然没有像我预期的那样出现。这是我的 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();
});

我的控制器:

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}

`

【问题讨论】:

    标签: javascript node.js express dust.js kraken.js


    【解决方案1】:

    你已经很接近答案了。

    这一行

       res.locals.messages = require('express-messages')(req, res);
    

    messages 中存储一个函数,将flash 消息作为html 片段输出。

    res.locals 由 express 与用于呈现模板的模型合并。

    现在您只需要一种从灰尘模板中调用此函数的方法。

    这样做:

    {messages|s}
    

    实际上并不调用函数。您需要将其称为上下文助手:

    {#messages /}
    

    您还需要清除最后一道障碍。 express-messages 所期望的函数签名与灰尘提供的不同,因此您必须将其包装在辅助函数中(在您的 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();
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-12
      • 1970-01-01
      • 2017-05-03
      • 1970-01-01
      • 2017-08-23
      相关资源
      最近更新 更多