Итак, когда я обрабатываю html-шаблоны из javascript (или coffeescript, я использую оба в зависимости от обстоятельств), я считаю, что у меня действительно распространенный случай, который кажется излишним неуклюжий. Например:JS/Coffee + HTML, более простой способ установить условный класс
У меня есть объект JS вроде этого:
var thingy = {
name: 'Some Thing',
category: 'widget',
active: true
};
Я мог бы хотеть, чтобы сделать это в HTML так:
<div class="widget active">Some Thing</div>
бит, который всегда чувствует себя неуклюжей превращается логическое проверьте javascript в строку класса css. То, что я обычно в конечном итоге делает что-то вроде этого:
function renderThing(thing) {
var klass = thing.active ? thing.category + " active" : thing.category
return '<div class="'+klass+'">'+thing.name+'</div>';
}
В CoffeeScript это чувствует больше, так как тройная более многословен:
renderThing = (thing) ->
klass = if thing.active then thing.category + " active" else thing.category
'<div class="'+klass+'">'+thing.name+'</div>'
Это не так уж страшно, когда есть только один такой собственности, но если вы попадаете в ситуацию с тремя или четырьмя, код быстро становится очень многословным.
Итак, мне было интересно, есть ли у кого-нибудь идеи/предложения по более сжатому и/или читабельному способу сделать это?
'Klass = thing.category; if (thing.active) klass + = "active" '? – Bergi
Не могли бы вы уточнить ситуацию «* с тремя из четырех», может быть, пример кода? Вы имеете в виду четырех троичных операторов? Возможна ли петля? – Bergi
@ Bergi yes Я имею в виду несколько тернарных операторов, например, если объект может иметь более одного типа состояния типа 'selected' или' current' или 'active' или' disabled' или 'bookmarked' и т. Д. Я пробовал не дать чрезмерно конкретный пример, потому что я думаю об этом больше, поскольку общая проблема, которую я нахожу, часто встречается в программировании javascript. – Andrew