在Sails.js中从控制器更改视图

时间:2014-08-04 18:31:45

标签: node.js sails.js

我只是想在视图文件的一部分中打印一个句子。但是控制器决定了它。 这是我的控制器文件 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命令并在我的视图中打印一个场景。但是控制器和登录功能应该决定它。

我的查看文件

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

1 个答案:

答案 0 :(得分:1)

您似乎没有read the documentation for viewsview locals。看起来你的后端代码(你的Sails控制器)与前端代码相混淆;像document.getElementById之类的东西用于在浏览器渲染之后操作前端的DOM。

您在行动中想要的是res.render,而不是res.view('login/index', {message: "Log in failed. Please check your Username or Password"} );

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

并在您看来:

res.view

请注意,如果EJS遇到模板中的任何未绑定变量,则会抛出错误,因此每次使用message呈现登录视图时,您都必须设置{{1}}本地,即使这是一个空字符串。

您可能还需要考虑使用flash messages进行此类操作。