Руль - используя #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); }