JavaScript: добавление условия if внутри переменной шаблона

У меня есть переменная шаблона в Javascript, как показано ниже

 var TABLE_ROW = '<tr class = {{bgColor}}>'
            + '<td><input id = {{ID}} type = "checkbox" class = "mysqlListCheckbox" checked = "checked"/> <span style = "padding: 7px;">{{COUNT}}</span></td>'
    + '<td><p class=text-warning>{{COMMENTS}}</p></td>'
    + '</tr>';

На данный момент ID всегда отмечен, но я хочу изменить его, например, ID не следует проверять/выбирать, если COMMENTS пуст.

Я новичок в переменных шаблона Javascript. Любые справочные ссылки для достижения этого высоко ценятся.

Спасибо.

Какой тип шаблонизатора вы используете? Это не встроенная функция Javascript. Я предполагаю, что текст JS там передается через движок перед тем, как быть переданным клиенту?

CertainPerformance 16.04.2019 07:52

Это просто строка с чем-то, что каким-то дополнительным пользовательским JavaScript «интерпретируется» как «шаблон».

Andreas 16.04.2019 07:52

Вы используете механизм шаблонов или просто хотите передать переменные javascript в строке? Если вы просто хотите передать переменные в строку в js, это работает как var TABLE_ROW = `some stuff here ${theVariable} and other stuff here.` `` очень важны. Если вы используете механизм шаблонов, вы должны сначала скомпилировать строку с переменными.

sassy_rog 16.04.2019 07:57
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
3
34
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Используйте тернарный оператор (если механизм шаблонов поддерживает его):

var TABLE_ROW = '<tr class = {{bgColor}}>'
            + '<td><input id = {{ID}} type = "checkbox" class = "mysqlListCheckbox" checked = {{COMMENTS == "" ? "" : "checked"}}/> <span style = "padding: 7px;">{{COUNT}}</span></td>'
    + '<td><p class=text-warning>{{COMMENTS}}</p></td>'
    + '</tr>';

Поскольку вы новичок в Javascript, попробуйте понять, как работает JS. JS как таковой не предоставляет готовых шаблонов для целей шаблона, вы можете использовать HandleBars.js, если вы использовали HandleBars. Я бы предложил вам использовать вспомогательную функцию, чтобы справиться с этим.

Ссылка на руль https://handlebarsjs.com/

Handlebars.registerHelper('decideSelect',function(param){
    if (param.COMMENTS.length==0){
        let Htmlstr =  '<td><input id='+param.ID+' type = "checkbox" class = "mysqlListCheckbox" /> <span style = "padding: 7px;">'+param.COUNT+'</span></td>'+'<td><p class=text-warning>'+param.COMMENTS+'</p></td>';
        return Htmlstr;
    }else{
        let Htmlstr =  '<td><input id='+param.ID+' type = "checkbox" class = "mysqlListCheckbox" checked = "checked"/> <span style = "padding: 7px;">'+param.COUNT+'</span></td>'+'<td><p class=text-warning>'+param.COMMENTS+'</p></td>';
        return Htmlstr;
    }


});
};

var TABLE_ROW = '<tr class = {{bgColor}}>'
    + '{{decideSelect this}}</tr>';

Другие вопросы по теме