未在ejs模板中捍卫全局功能

问题描述 投票:0回答:1

我为使用全局功能编写了此帮助程序:

   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') %>"

它向我显示此错误:

未定义旧

怎么了?我该如何解决这个问题?

javascript node.js ejs
1个回答
0
投票

您无法将数据从模板传递到服务器,ejs是一种模板语言,可让您生成HTML标记,这是为了简化使用无法使用javascript的模板将数据传递到视图的过程

© www.soinside.com 2019 - 2024. All rights reserved.