#javascript #jquery #kendo-ui #kendo-grid
#javascript #jquery ( jquery ) #кендо-пользовательский интерфейс #kendo-grid #jquery #kendo-ui
Вопрос:
Следующий код не работает. Кто-нибудь может помочь мне написать и else if
сформулировать здесь условия?
function getMyColumns() {
return [{
field: "xxx",
title: "1st",
width: "75px",
}, {
field: "ChoiceCode",
title: "2nd",
width: "75px",
template: "#if(ChoiceCode == null) {# #} else If(mychoice == ChoiceCode) {#"
"{ #<div style='background-color:lightgreen'><span>#=ChoiceCode#</span></div>#}"
"else {# <span>#=secondChoiceCode#</span> #}"
"#}#"
}, {
}];
}
В поле выбора, если оно равно null, я хочу отобразить пустую строку, и если у нее есть значение, и оно соответствует моему выбору, я хочу выделить эту ячейку зеленым цветом, если она не соответствует моему выбору, не выделяйте ее.
Ответ №1:
Если вы разместите свой шаблон встроенным, это будет так:
#if(ChoiceCode == null) {# #} else If(mychoice == ChoiceCode) {# { #<div style='background-color:lightgreen'><span>#=ChoiceCode#</span></div>#}else {# <span>#=secondChoiceCode#</span> #} #}#
Или еще лучше (намеренно без #
):
if(ChoiceCode == null) { }
else If(mychoice == ChoiceCode) {
{ <div style='background-color:lightgreen'><span>#=ChoiceCode#</span></div>
}
else {
<span>#=secondChoiceCode#</span> }
}
Заметили что-то не так? Я думаю, что это должно быть так:
if(ChoiceCode == null) { }
else If(mychoice == ChoiceCode) {
<div style='background-color:lightgreen'><span>#=ChoiceCode#</span></div>
}
else {
<span>#=secondChoiceCode#</span>
}
Встроенная версия:
# if(ChoiceCode == null) { # # } else if (mychoice == ChoiceCode) { #<div style='background-color:lightgreen'><span>#=ChoiceCode#</span></div> # } else { # <span>#=secondChoiceCode#</span> # } #
Версия кода:
template: "#if(ChoiceCode == null) {# #} else if(mychoice == ChoiceCode) {#"
"<div style='background-color:lightgreen'><span>#=ChoiceCode#</span></div>#}"
"else {# <span>#=secondChoiceCode#</span> #}#";
Комментарии:
1. спасибо вам ооочень большое, отличное объяснение .. меня всегда смущало, как и куда помещать #
2. @bansi когда вы запутались, напишите это так, как если бы это был чистый код, затем добавьте хэши, а затем добавьте его в код, как я сделал выше, это становится легче понять.
Ответ №2:
Лично я бы изменил это, чтобы его было немного легче читать и изменять.
вместо того, чтобы размещать здесь всю логику, извлеките ее в функцию, чтобы ваша команда шаблона выглядела так:
template: "#=highlighter(data.ChoiceCode, data.mychoice, data.secondChoiceCode) #"
функция написана следующим образом:
function(choiceCode, myChoice, secondChoiceCode) {
var retString = '';
if (choiceCode === null || choiceCode === undefined) {
retString = '';
} else if (myChoice === choiceCode) {
resString = '<div style="background-color:lightgreen;"><span>'
choiceCode '</span></div>'
} else {
retString = '<span>' secondChoiceCode '</span>';
}
return retString;
}
Затем вы можете избавиться от необходимости запоминать, куда должны идти различные фигурные скобки, и избегать их в вашем шаблоне.
Очевидно, измените функцию так, как вам нужно, чтобы возвращать данные, но это основано на том, что я мог видеть в предоставленном вами исходном коде. Я предполагаю, что переменные являются свойствами в вашей модели привязки для каждой строки.
РЕДАКТИРОВАТЬ Я добавил следующую демонстрацию, которая, надеюсь, поможет: http://dojo.telerik.com/ejaqU/2
Комментарии:
1. спасибо за ответ. Как я упоминал в своем предыдущем комментарии, я уже пробовал, что он выдает «Неперехваченную ошибку ссылки: маркер не определен
2. Я использую AngularJS
3. хорошо, я нашел ошибку в своем коде, которую я исправил. Вот демонстрация, чтобы показать вам Angular (что, я должен сказать, не является моей сильной стороной) dojo.telerik.com/ejaqU/2
4. Это помогло мне с нагрузками — интеграция Angular бесполезна в Kendo, так что это сработало для меня!
Ответ №3:
возможна опечатка
} else If(mychoice == ChoiceCode) {
должно быть
} else if(mychoice == ChoiceCode) {
Комментарии:
1. я попытался создать функцию и ввести туда логин, но это также выдает ошибку «ошибка неперехваченной ссылки xxx не определена»
Ответ №4:
В ваших шаблонах есть несколько скобок extara ({)
Попробуйте это
function getMyColumns() {
return [{
{
field: "xxx",
title: "1st",
width: "75px",
}, {
field: "ChoiceCode",
title: "2nd",
width: "75px",
template: "#if(ChoiceCode == null) {# #} else if(mychoice == ChoiceCode) {#"
"<div style='background-color:lightgreen'><span>#=ChoiceCode#</span></div>#}"
"else {# <span>#=secondChoiceCode#</span> #}#",
}, {
}];
}