if statement - update - Cambiar declaración de caso en script de café
update en unity (2)
Tengo algunos botones diferentes que están llamando a la misma función y me gustaría tenerlos envueltos en una declaración de cambio en lugar de usar un montón de otras condiciones. Cualquier ayuda sería genial!
events:
"click .red, .blue, #black, #yellow" : "openOverlay"
openOverlay: (e) ->
e.preventDefault()
e.stopPropagation()
target = $(e.currentTarget)
# the view should be opened
view =
if target.hasClass ''red'' then new App.RedView
else if target.hasClass ''blue'' then new App.BlueView
else if target.is ''#black'' then new App.BlackView
else
null
# Open the view
App.router.overlays.add view: view if view?
Además de los detalles en la respuesta aceptada , las instrucciones switch
en CoffeeScript también son compatibles ,
para proporcionar resultados de múltiples coincidencias:
switch someVar
when val3, val4 then ...
else ...
o (si sus declaraciones tienen varias líneas):
switch someVar
when val3, val4
...
else
...
Hay dos formas de switch
en CoffeeScript:
switch expr
when expr1 then ...
when expr2 then ...
...
else ...
y:
switch
when expr1 then ...
when expr2 then ...
...
else ...
La segunda forma puede ayudarte:
view = switch
when target.hasClass ''red'' then new App.RedView
when target.hasClass ''blue'' then new App.BlueView
when target.is ''#black'' then new App.BlackView
else null
Podría dejar fuera el else null
si undefined
es un valor aceptable para la view
. También podría envolver la lógica en una función (explícita):
viewFor = (target) ->
# There are lots of ways to do this...
return new App.RedView if(target.hasClass ''red'')
return new App.BlueView if(target.hasClass ''blue'')
return new App.BlackView if(target.is ''#black'')
null
view = viewFor target
Darle a tu lógica un nombre (es decir, envolverlo en una función) a menudo es útil para aclarar tu código.