Saya mencoba menambahkan fungsi pembantu ke templat ejs saya. Saya telah mengikuti jawaban yang diberikan di tautan fungsi pembantu nodejs ejs. Namun sepertinya tidak berhasil. Semua properti lain dari objek ViewModel muncul kecuali properti stempel waktu, yang diteruskan ke fungsi stempel waktu di app.locals.

Objek yang dirender ke template utama

const ViewModel = {
    image:{
        uniqueId: 1,
        title: 'Sample Image 1',
        description: 'This is a sample.',
        filename: 'sample1.jpg',
        Views: 0,
        likes: 0,
        timestamp: Date.now()
},

helpers/timeago.js

const moment = require('moment');

module.exports = (timestamp) => {
        return moment(timestamp).startOf('minute').fromNow();
}

Kode relevan dari server.js

const helpers = require('./helpers');
helpers(app);

helper.js Menempatkan fungsi ke app.locals

const timeago = require('./../helpers/timeago');

module.exports = (app) => {
    app.locals.timeago = timeago;
};

Template Main.ejs: Menggunakan fungsi di app.locals

<em class="text-muted"><% timeago(image.timestamp) %></em>

Bagaimana cara saya berhasil menambahkan fungsi ke app.locals dan menggunakannya dalam template ejs?

0
Simple 1 Juli 2020, 02:12

1 menjawab

Jawaban Terbaik

Anda dapat menggunakan fungsi dalam rendering template EJS. Masalah Anda kemungkinan besar karena Anda menggunakan tag kontrol aliran <% alih-alih tag keluaran, <%- atau <%=.

Jadi template Anda mungkin harus berisi:

<em class="text-muted"><%- timeago(image.timestamp) %></em>
2
Russopotomus 30 Juni 2020, 23:50