sails.js - sailsJs - 从控制器传递的数据在视图中不可用
问题描述
我已经为这个问题苦苦挣扎了好几个小时,但我找不到解决方案,我也无法在互联网上找到解决方案,我一遍又一遍地阅读文档,我正在按照显示的方式进行操作我可以告诉,但它不会工作。
我试图将一个数组从控制器传递到视图,但它不起作用,即使我使用 if 语句,即使我使用 locals.errors (错误是我发送的数组),我也会收到变量未定义的错误从控制器),它仍然不会显示任何数据。
控制器
/**
* AuthControllerController
*
* @description :: Server-side actions for handling incoming requests.
* @help :: See https://sailsjs.com/docs/concepts/actions
*/
module.exports = {
login: async function (req, res) {
},
signup: async function (req, res) {
let username = req.param('username'),//regex condition should be added to model
password = req.param('password'),
confirmedpass = req.param('confirmedpass'),
email = req.param('useremail');
let errors = [];
if (password !== confirmedpass) {
errors.push('Passwords doesn\'t match');
}
if (!_.isString(username) || username.length > 20 || !username.match(/^[a-zA-Z0-9]+$/)) {
errors.push('Username must not be longer as 20 characters, letters and numbers only');
}
if (await Account.findOne({username: username})) {
errors.push('Username already exists');
}
if (await Account.findOne({email: email})) {
errors.push('Email is already in use');
}
if (errors.length > 0) {
console.log(`Errors ${errors}`);
return res.view('pages/signup', {errors: errors, layout: 'layouts/blanklayout'});
}
try {
await Account.create({username: username, password: password, email: email});
}
catch(e) {
return console.log(e.message);
}
return console.log(`Username: ${username} | Password: ${password} | Email: ${email}`);
},
logout: async function (req, res) {
},
loadView: function (req, res) {
return res.view('pages/signup', {layout: 'layouts/blanklayout'});
}
};
这是视图布局
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<meta name="author" content="">
<link rel="icon" href="/images/favicon.ico">
<title>LC-RP - Dashboard</title>
<link rel="stylesheet" href="/styles/vendors_css.css">
<link rel="stylesheet" href="/styles/style.css">
<link rel="stylesheet" href="/styles/skin_color.css">
<link href="https://fonts.googleapis.com/icon?family=Material+Icons"
rel="stylesheet">
</head>
<body class="hold-transition theme-primary bg-img" style="background:
radial-gradient(circle at 100% 50%, transparent 20%, rgba(255,255,255,.2) 21%, rgba(255,255,255,.2) 34%, transparent 35%, transparent),
radial-gradient(circle at 0% 50%, transparent 20%, rgba(255,255,255,.2) 21%, rgba(255,255,255,.2) 34%, transparent 35%, transparent) 0 -50px;
background-color: rgb(154, 160, 165);
background-size:75px 100px;" data-overlay="5">
<%- body %>
<script src="/js/vendors.min.js"></script>
<script src="/dependencies/assets/icons/feather-icons/feather.min.js"></script>
<script src="/js/pages/toastr.js"></script>
<% if ( errors ) { %>
<script>
$(function() {
let testVar = "<%- errors %>";
console.log(`test, ${locals}`);
})
</script>
<% } %>
</body>
</html>
您可以看到我尝试在脚本标记中的视图布局代码底部显示错误。
这是在布局中,但即使我在视图本身中这样做,它也不起作用,错误不会显示任何数据,它甚至不存在。
解决方案
控制器必须返回到 assets/js/pages/auth.page.js(Vue2+ 的包装器),它反过来为views/pages/auth.ejs 提供变量。
推荐阅读
- python - 在无头模式下无法在 ChromeDrive 中打开网站
- c# - 使用 TreeView 控件的悬停菜单
- c# - 如何创建指向同一唯一字符串列的 2 个字符串外键?
- python-3.x - Python glob.glob 在 Mac 上返回空列表
- hibernate - 休眠获取两个时间戳之间的时间段
- machine-learning - ValueError: X.shape[1] = 772 应该等于 676,训练时的特征数
- pine-script - NR4 代码看到 Pine 脚本运行错误“内部服务器 pine 编译错误”
- github - 为什么我会收到不同的结果搜索存储库?
- html - 重定向到另一个页面到特定部分
- javascript - 如何从 props.map 中删除空值