Руль - используя #if помощников с двумя условиями

В моем файле js я передаю объект JSON с двумя ключами - {'tests': tests, 'isComplete': isComplete}

В моем файле handlebars я хочу отобразить объект тестов на основе каждого статуса теста. В то же время, есть еще одно условие, для которого я добавил помощника с именем isRequired, с которым я хочу проверять тест, только если isComplete не соответствует true.

{{#if isComplete}}
{{#each tests}}
    {{#isRequired this}}
        // display data
    {{/isRequired}}
{{/each}}
{{else}}
{{#each tests}}
    // display data
{{/each}}{{/if}} 

Этот код имеет повторяющийся код для отображения данных. Я все еще изучаю рули и не знаю, как устранить этот лишний блок кода. Можете ли вы помочь мне, как я могу реорганизовать это? Спасибо!

1 ответ

Решение

Я бы, вероятно, решил это, добавив isComplete параметр вашего isRequired помощник. Вы не предоставили код для своего помощника, но я предполагаю, что он будет выглядеть примерно так:

Handlebars.registerHelper('isRequired', function (context, isComplete, options) {
    if (!isComplete) { return options.fn(context); }
    /* rest of isRequired implementation here */
});

Ваш шаблон будет обновлен следующим образом:

{{#each tests}}
    {{#isRequired this ../isComplete}}
        // display data
    {{/isRequired}}
{{/each}}

Обратите внимание, что эта реализация применяет isRequired логика только если isComplete является true, Это те же правила, которые существуют в вашем образце кода шаблона. Однако эти правила противоречат тексту вашего вопроса, в котором указано, что isRequired должен применяться "только если isComplete не является истиной". Если это требования, которым мы должны соответствовать, нам нужно только удалить оператора not из нашего нового пункта защиты:

 if (isComplete) { return options.fn(context); }
Другие вопросы по тегам