从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消息这种事情。