Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 闪光信息不';在刷新或第二次发布之前不显示?_Javascript_Node.js_Express_Sails.js - Fatal编程技术网

Javascript 闪光信息不';在刷新或第二次发布之前不显示?

Javascript 闪光信息不';在刷新或第二次发布之前不显示?,javascript,node.js,express,sails.js,Javascript,Node.js,Express,Sails.js,我再次跳入Sails.js,并在整个应用程序中创建flash消息(错误、成功或警报)。我正在寻找一个好的方法来实现它,我实现了他们建议的解决方案 一般的机制工作得很好,但是,flash消息只有在二次刷新或另一次发布后才能看到。页面加载时,它最初不会显示。以下是我对所有内容的结构化方式,我正在使用“sails”:“~0.10.0-rc7”当前: 在我的api/policies文件夹中,我有flash.js: // flash.js policy module.exports = function(

我再次跳入Sails.js,并在整个应用程序中创建flash消息(错误、成功或警报)。我正在寻找一个好的方法来实现它,我实现了他们建议的解决方案

一般的机制工作得很好,但是,flash消息只有在二次刷新或另一次发布后才能看到。页面加载时,它最初不会显示。以下是我对所有内容的结构化方式,我正在使用
“sails”:“~0.10.0-rc7”
当前:

在我的
api/policies
文件夹中,我有
flash.js

// flash.js policy
module.exports = function(req, res, next) {
  res.locals.messages = {
    success: [], 
    error: [], 
    warning: []
  };

  if(!req.session.messages) {
    req.session.messages = { success: [], error: [], warning: [] };
    return next();
  }

  res.locals.messages = _.clone(req.session.messages);

  // Clear flash
  req.session.messages = { success: [], error: [], warning: [] };
  return next();
};
// FlashService.js
module.exports = {

  success: function(req, message) {
    req.session.messages['success'].push(message);
  },

  warning: function(req, message) { 
    req.session.messages['warning'].push(message);
  },  

  error: function(req, message) {
    req.session.messages['error'].push(message);
  }
}
在我的
api/services
中,我有
FlashService.js

// flash.js policy
module.exports = function(req, res, next) {
  res.locals.messages = {
    success: [], 
    error: [], 
    warning: []
  };

  if(!req.session.messages) {
    req.session.messages = { success: [], error: [], warning: [] };
    return next();
  }

  res.locals.messages = _.clone(req.session.messages);

  // Clear flash
  req.session.messages = { success: [], error: [], warning: [] };
  return next();
};
// FlashService.js
module.exports = {

  success: function(req, message) {
    req.session.messages['success'].push(message);
  },

  warning: function(req, message) { 
    req.session.messages['warning'].push(message);
  },  

  error: function(req, message) {
    req.session.messages['error'].push(message);
  }
}
我的
config/policies.js
也配置了
flash
策略:

// config/policies.js
module.exports.policies = {
  '*': [true, 'flash'],
  'UserController': {
    'join': ['flash'],
  },
};
现在,在所有这些设置中,我如何使用它的示例出现在我的
UserController
中,用于我的
join
操作:

module.exports = {

    join: function(req, res) {

        // If username, email, and password compare come back true: create user.
        if(newUser.username && newUser.email && newUser.password == newUser.confirmPassword) {

            // Logic to create user.
            res.view();

        // If not, then report an issue.
        } else {

            FlashService.error(req, 'There was an issue.');
            res.view();

         };
    }
};
最后,我的观点与我链接的讨论完全相同。我在这方面使用了
EJS

<% if (messages && messages['error'].length > 0) { %>
  <div class="alert alert-danger">
  <% messages['error'].forEach(function(message) { %>
    <%= message %>
    <br>
  <% }); %>
  </div>
  <br>
<% } %>
<% if (messages && messages['warning'].length > 0) { %>
  <div class="alert alert-warning">
  <% messages['warning'].forEach(function(message) { %>
    <%= message %>
    <br>
  <% }); %>
  </div>
  <br>
<% } %>
<% if (messages && messages['success'].length > 0) { %>
  <div class="alert alert-success">
  <% messages['success'].forEach(function(message) { %>
    <%= message %>
    <br>
  <% }); %>
  </div>
  <br>
<% } %>
0){%>


0) { %>

0) { %>

我会做错什么?任何帮助都将不胜感激


谢谢,

您的消息在控制器执行命令之前被读取(读取后只设置消息)。req对象在您的视图中可用,您应该直接将req.session.messages['xxxx']读取到您的视图中