首页 > 解决方案 > 错误:test_project/views/index.hbs:缺少助手:“ifCond”

问题描述

我正在尝试使用 registerHelper() 方法创建一个自定义块助手ifCond,但它作为Missing helper: "ifCond"引发错误。

下面给出了代码-

test_project/app.js

const express = require('express')
const app = express()
const Handlebars = require('handlebars')

todolist = [
    {
        task: 'Task 1',
        status: 'Todo'
    },
    {
        task: 'Task 2',
        status: 'In Progress'
    }
]

Handlebars.registerHelper("ifCond", function(key, value, options) {
    return (key==value) ? options.fn(this) : options.inverse(this)
})

app.use(express.urlencoded({extended:true}))
app.set('view engine', 'hbs')

app.get('/', (req, res)=>{
    res.render('index', {
        title: 'Todolist',
        todolist
    })
})

app.post('/', (req,res)=>{
    todolist.push({
        task: req.body.task,
        status:req.body.status
    })
    res.redirect('/')
})


app.listen(1111, ()=>{
    console.log('server started at http://localhost:1111')
})

test_project/views/index.hbs

<!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.0">
    <title>Todolist SSR</title>
</head>
<body>
    <h1>{{title}}</h1>
    <form action="/" method="post">
        <input type="text" name="task" id="task" placeholder="Enter the task">
        <select name="status" id="status">
            <option value="Todo">Todo</option>
            <option value="In Progress">In Progress</option>
            <option value="In Review">In Review</option>
            <option value="Done">Done</option>
        </select>
        <input type="submit" value="Submit">
    </form>
    <br>
    <br>
    <table id="display">
        <thead>
            <tr>
                <th>Todo</th>
                <th>In Progress</th>
                <th>In Review</th>
                <th>Done</th>
            </tr>
        </thead>
        <tbody>
            {{#each todolist as |todo|}}
                {{#ifCond todo.status "Todo"}}
                    <tr><td>{{ todo.task }}</td><td></td><td></td><td></td></tr>
                {{else}}
                    {{#ifCond todo.status "In Progress"}}
                        <tr><td></td><td>{{ todo.task }}</td><td></td><td></td></tr>
                    {{else}}
                        {{#ifCond todo.status "In Review"}}
                            <tr><td></td><td></td><td>{{ todo.task }}</td><td></td></tr>
                        {{else}}
                            <tr><td></td><td></td><td></td><td>{{ todo.task }}</td></tr>
                        {{/ifCond}}
                    {{/ifCond}}
                {{/ifCond}}
            {{/each}}
        </tbody>
    </table>
</body>
</html>

错误:test_project/views/index.hbs:缺少助手:“ifCond”

请让我知道我在哪里犯错。我真的很感激任何形式的帮助。

标签: javascriptnode.jshandlebars.jshandlebarshelper

解决方案


推荐阅读