从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命令,并在我看来打印一个场景。 但是控制器和loginfunction应该决定它。

我的观点文件

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

看起来你没有阅读文档的意见或查看当地人 。 它也看起来像你后端代码(你的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> 

请注意,如果EJS在模板中遇到任何未绑定的variables时会抛出错误,所以每次使用res.view渲染login视图时,即使是空string,也必须将message设置为本地。

你也可能想考虑使用Flash消息这种事情。