{#each groups as |group|}}
{{#eq group.name "AwesomeName"}}
<div>C'è una corrispondenza!</div>
{{/eq}}
{{/each}}
Questo non funziona. (Non vengono forniti errori.)
Ho provato la soluzione qui, che cerca di usare “makeBoundHelper”, ma non funziona nemmeno per me: in quel caso ricevo errori riguardo al fatto che “makeBoundHelper” non è una funzione.
Voglio solo poter fare un’istruzione if per confrontare una stringa con un valore. Come si fa?
Le proprietà calcolate sono interessanti, ma non vedo il collegamento con ciò su cui mi sto concentrando qui.
Nel mio esempio, la proprietà chiave è group.name e voglio valutare nel template se tale proprietà corrisponde a “AwesomeName”. Non sono sicuro di come le proprietà calcolate possano evitare la necessità di utilizzare un particolare tipo di istruzione {{if}} nel template che non sono riuscito a capire.
I template Handlebars dispongono solo di una logica booleana rudimentale. Puoi eseguire controlli sui valori truthy di una proprietà.
Per gestire logiche più complesse, devi eseguire il calcolo nel file JS di Ember associato al template.
Ad esempio, se hai un template in templates/components/my-component.hbs, dovrai utilizzare il file JS components/my-component.js per effettuare il calcolo.
In quel file, potresti scrivere qualcosa di simile:
Non sono ancora riuscito a farlo funzionare del tutto, in parte perché non trovo esempi online sull’uso delle proprietà calcolate per questo tipo di operazione.
Nel mio caso, nel mio plugin, sto apportando la modifica nel template dell’indice dei gruppi. Quindi nel file: plugin/assets/javascripts/discourse/groups/index.hbs (ho inserito tutto il codice dell’indice dei gruppi lì e ho aggiunto le modifiche sopra di esso.)
Vuoi dire che il file JS della proprietà calcolata andrebbe in un file che creo chiamato: plugin/assets/javascripts/discourse/groups/index.js? Oppure posso inserire quel codice direttamente in un inizializzatore?
Questo è il mio miglior tentativo per implementare ciò di cui stai parlando—è questo quello che avevi in mente:
{{#if property}}
<div>Sì, c'è una corrispondenza!</div>
{{/if}}
O intendevi che dovrei inserire letteralmente valori generici come “string1” e “string2” in @discourseComputed e poi modificare il template in {{#if property group.name "Amazing_Name"}}? (Solo in quel modo potrei gestire il fatto che ogni valore sia dinamico nel template.)
Non sono ancora riuscito a far funzionare completamente nessuno dei due approcci.
Sei riuscito a farlo funzionare? Vorrei un esempio dettagliato su come procedere (cosa aggiungere, in quale file e in quale punto del file, se rilevante).
In realtà non sono mai riuscito a farlo funzionare e ho dovuto andare avanti. Sembrava assurdo perdere così tanto tempo su quello che normalmente sarebbe un esercizio di base di programmazione. Nel mio caso, penso che fosse probabilmente un po’ di sintassi errata qui e un po’ di sintassi errata là, ma non ho mai trovato esempi completi e funzionanti. Sarei anche grato per un esempio completo e funzionante su come fare un if string === string.