我只是想在视图文件的一部分中打印一个句子。但是控制器决定了它。 这是我的控制器文件 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>
答案 0 :(得分:1)
您似乎没有read the documentation for views或view 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进行此类操作。