Il semble plutôt étrange que je ne puisse pas comprendre comment faire cela avec la moustache. Est-il pris en charge?
Ceci est ma triste tentative d'essayer:
{{#author}}
{{#avatar}}
<img src="{{avatar}}"/>
{{/avatar}}
{{#!avatar}}
<img src="/images/default_avatar.png" height="75" width="75" />
{{/avatar}}
{{/author}}
Ce n'est évidemment pas vrai, mais la documentation ne mentionne rien de semblable. Le mot "else" n'est même pas mentionné :(
Aussi, pourquoi la moustache est-elle conçue de cette façon? Ce genre de chose est-il considéré comme mauvais? Essaie-t-il de me forcer à définir la valeur par défaut dans le modèle lui-même? Qu'en est-il des cas où cela n'est pas possible?
javascript
templates
mustache
egervari
la source
la source
{{#each items}}{{#unless @first}}Output comma before 2nd, 3rd, 4th...{{/unless}}{{/each}}
est plus lisible, beaucoup plus propre et reste une présentation. "Logic-moins" est une ligne directrice, il ne doit pas être une camisole de force.mustache
Réponses:
Voici comment faire si / else dans Moustache (parfaitement pris en charge):
Ou dans votre cas:
Recherchez les sections inversées dans les documents: https://github.com/janl/mustache.js
la source
if (condition){ //do something}
suivie d'unif (!condition){//do something else}
. De plus, la quantité de logique que l'on peut exécuter en logique est extrêmement réduite par rapport à un langage basé sur la logique. L'existence ou la non-existence sont les seules vérifications, c'est-à-dire que vous ne pouvez pas vérifier si la valeur d'une balise est égale à 5, puis tomber dans le code de cette balise.C'est quelque chose que vous résolvez dans le "contrôleur", qui est le point de modèle sans logique.
C'est en fait beaucoup mieux que de maintenir les URL des images ou d'autres médias qui pourraient ou non changer dans vos modèles, mais cela prend un certain temps pour s'y habituer. Le but est de désapprendre la vision du tunnel de modèle, une URL img d'avatar est destinée à être utilisée dans d'autres modèles, allez-vous conserver cette URL sur les modèles X ou un seul objet de paramètres DEFAULTS? ;)
Une autre option consiste à effectuer les opérations suivantes:
Et dans le modèle:
Mais cela va à l'encontre de toute la signification des modèles sans logique. Si c'est ce que vous voulez faire, vous voulez des modèles logiques et vous ne devriez pas utiliser la moustache, mais donnez-vous une bonne chance d'apprendre ce concept;)
la source
Votre déclaration else devrait ressembler à ceci (notez le
^
):Dans la moustache, cela s'appelle «sections inversées».
la source
Vous pouvez définir un assistant dans la vue. Cependant, la logique conditionnelle est quelque peu limitée. Moxy-Stencil ( https://github.com/dcmox/moxyscript-stencil ) semble résoudre ce problème avec des assistants "paramétrés", par exemple:
{{isActive param}}
et dans la vue:
view.isActive = function (path: string) {return path === this.path? "class = 'active'": ''}
la source
Remarque, vous pouvez utiliser
{{.}}
pour rendre l'élément de contexte actuel.la source