node.js - 从 Sails.js 中的 Controller 更改 View

标签 node.js sails.js

我只想在 View 文件的一部分中打印一个句子。但由 Controller 决定。 这是我的 Controller 文件 loginController

login: function(req, res){
  var x = new LdapService();

  console.log('inside log in action') ;
  x.loginSuccessful(req.body.userid, req.body.password, function(isAuth){
      console.log(isAuth) ;
      if(isAuth )
          res.send('successful login');
      else
          res.render('login/index', document.getElementById("message").innerHTML = "Log in failde. Please check your Username or Password");
  });
},

我不想使用 jSon。我只想执行一个 javascript 命令并在我的 View 中打印气味。但 Controller 和登录功能应该决定它。

我的查看文件:

<div class="form-group">
    <input type="password" name="password" class="form-control" placeholder="Password"/>    
    <br>
    <p id="message"></p>
    <br>
</div>       

最佳答案

您似乎没有 read the documentation for viewsview locals 。看起来您还混淆了后端代码(您的 Sails Controller )和前端代码;像 document.getElementById 这样的东西用于在浏览器渲染完之后在前端操作 DOM。

您在操作中想要的而不是 res.render 是:

res.view('login/index', 
    {message: "Log in failed. Please check your Username or Password"}
);

在您看来:

<p id="message"><%=message%></p>

请注意,如果 EJS 在模板中遇到任何未绑定(bind)的变量,它就会抛出错误,因此每次使用 res.view 渲染登录 View 时,您都必须设置本地 message,即使它是一个空字符串。

您可能还想考虑使用flash messages对于这种事情。

关于node.js - 从 Sails.js 中的 Controller 更改 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25125248/

相关文章:

sails.js - 将动态内容集成到 Sails.JS 应用程序中的layout.ejs 文件中的正确方法是什么?

javascript - 如何在 Sails 中访问 Controller 外部的模型

node.js - 无法在 ionic 3 应用程序中的 ios 设备上存储 cookie

javascript - 通过 Node.js 控制台获取用户输入

node.js - 无法在不阻塞 DigitalOcean 的情况下运行多个 Node 子进程

error-handling - 只要 SailsJS 出现错误,Sails 服务器就会关闭

node.js - sails js 框架中的 session 管理

javascript - User.findOne 充当 SailsJs 中的 User.Update

javascript - 如何将文件的每一行传输到数组单元格?

node.js - 在 Node 中使用 Paypal Rest API