我为使用全局功能编写了此帮助程序:
const path = require('path');
const autuBind = require('auto-bind');
module.exports = class Helpers {
constructor(req, res) {
autuBind(this);
this.req = req;
this.res = res;
this.formData = req.flash('formData')[0];
}
getObjects() {
return {
auth: this.auth(),
viewPath: this.viewPath,
old:this.old,
...this.getGlobalVaribales()
}
}
auth() {
return {
check: this.req.isAuthenticated(),
user: this.req.user
}
}
getGlobalVaribales() {
return {
errors: this.req.flash('erros')
}
}
viewPath(dir) {
return path.resolve(config.layout.view_dir + '/' + dir);
}
old(field, defaultValue = '') {
return this.formData && this.formData.hasOwnProperty(field) ? this.formData[field] : defaultValue;
}
}
并在server.js中设置它:
app.use((req , res , next) => {
app.locals = new Helpers(req, res).getObjects();
next();
});
正在使用ejs
模板:
<input id="phoneNumber" name="phoneNumber" value="<%= old('phoneNumber') %>" required type="text">
使用此功能时:value="<%= old('phoneNumber') %>"
它向我显示此错误:
未定义旧
怎么了?我该如何解决这个问题?
您无法将数据从模板传递到服务器,ejs是一种模板语言,可让您生成HTML标记,这是为了简化使用无法使用javascript的模板将数据传递到视图的过程