varias update unity que for condiciones awake if-statement coffeescript switch-statement

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.