Как сравнить рули заполнителей с #compare - PullRequest
0 голосов
/ 04 мая 2018

Я плохо пытаюсь сравнить один предмет с другим с помощью руля. Как видно из приведенного ниже кода, я просто хочу проверить, совпадает ли course_id с запрашиваемым (courseID = req.query.course_id), поэтому при моем выборе выбранный элемент будет тем, который был задан с запросом.

Однако я не могу найти какое-либо решение для сравнения (я установил помощники руля) с другим заполнителем. Например, код работает, если я заменил courseID на "5ae0aebc8ab041016c9e08db" ("5ae0aebc8ab041016c9e08db" - это course_id, запрошенный в URL).

Знаете ли вы, как заставить это работать, пожалуйста?

                <form id= "course_id" action="" method='get'>
            <select id="course_id" name="course_id" onChange="document.getElementById('course_id').submit()">
                {{#each courses}}
                    <option value="{{this._id}}" {{#compare this._id "==" courseID }}selected="selected"{{/compare}} >{{this.name}}</option>
                {{/each}}
            </select>
        </form>

1 Ответ

0 голосов
/ 24 мая 2018

Вы можете использовать руль пользовательских функций помощника. Просто добавьте в ваше экспресс-приложение это:

/* equals helper */
hbs.registerHelper('ifEquals', function (v1, v2, options) {
    if (v1 === v2) return options.fn(this);
    return options.inverse(this);
});

/* not equals helper */
hbs.registerHelper('ifNotEquals', function (v1, v2, options) {
    if (v1 !== v2) return options.fn(this);
    return options.inverse(this);
});

А потом в вашем HTML:

{{#each courses}}
    <option value="{{this._id}}" {{#ifEquals this._id courseID }}selected="selected"{{/ifEquals}}>{{this.name}}</option>
{{/each}}
...