¿Lógica en la statement de manillar if / else?

Perdónenme por la estúpida pregunta, sé que no deben poner lógica en las expresiones del manubrio, pero soy nuevo en esto y no estoy seguro de cómo solucionarlo.

Básicamente quiero cambiar el texto de un botón en función del valor de la expresión de un manillar, pero no estoy seguro de cómo hacerlo sin poder agregar operadores lógicos en mi statement {{#if}} .

Básicamente, cuando el valor de {{form.target}} es igual a “nuevo”, quiero que el texto del botón diga “Guardar”, y si el valor es igual a “editar”, quiero que el texto diga “Guardar Cambios “.

Esta es la forma en que lo escribiría si pudiera:

  

Obviamente estoy fuera de la base aquí, así que esperaba que alguien pudiera indicarme la forma correcta de hacerlo.

Puedes registrar un ayudante

  Handlebars.registerHelper("equals", function(string1 ,string2, options) { if (string1 === string2) { return options.fn(this); } else { return options.inverse(this); } }); 

Lo ideal sería crear una propiedad en el objeto de form que le brinde la información que necesita, por ejemplo, form.targetIsNew y / o form.targetIsEdit . Si configura eso de antemano, puede usarlo en su bloque if / else.

Por lo tanto, antes de representar la plantilla del manillar, configure una de esas propiedades:

 form.targetIsNew = form.target == 'new'; 

También puede usar ayudantes de bloque si las cosas son más complejas.

Tiene razón en que la orientación común es limitar el uso de la lógica en sus puntos de vista. A veces lo necesitarás, pero en este ejemplo podemos prescindir.

Los manubrios hacen referencia a los valores que se pasan a la función de plantilla como su context . Puede usar alguna lógica de bifurcación para asignar una variable al valor que necesita, luego en la plantilla referencia ese valor directamente.

Los detalles variarán según cómo uses los manubrios, pero aquí hay un ejemplo: