web-dev-qa-db-fra.com

Meteor + Blaze - déclaration If else

En regardant ce en utilisant Blaze guide, il semble que Blaze supporte {{#if}} et {{else}} instructions, mais je n'ai pas vu d'exemples d'instructions if-else. Est-ce pris en charge dans Blaze? Ou dois-je faire un bloc if supplémentaire à l'intérieur du bloc else, qui peut devenir laid.

J'ai essayé {{else if}}, mais cela a donné une erreur.

{{#if en}}{{text.en}}{{else if tc}}{{text.tc}}{{/if}}
26
dayuloli

Les barres d'espace utilisent la même structure de flux de contrôle que guidons donc la réponse est la même que celle-ci . Dans ton cas:

{{#if en}}
  {{text.en}}
{{else}}
  {{#if tc}}
    {{text.tc}}
  {{/if}}
{{/if}}

Note latérale - l'une des bonnes choses à propos de jade est qu'il prend en charge else if.


Parfois, une meilleure alternative consiste à déplacer la logique dans un assistant comme celui-ci:

Template.myTemplate.helpers({
  textValue: function() {
    if (this.en) {
      return this.text.tc;
    } else if (this.tc) {
      return this.text.tc;
    }
  }
});
<template name="myTemplate">
  <p>{{textValue}}</p>
</template>
55
David Weldon

Dans le prolongement de l'excellente réponse de @David Wheldon, il convient également de noter que vous pouvez transmettre des paramètres à vos fonctions d'assistance JavaScript à partir de votre modèle Blaze.

Ainsi, par exemple, le code ci-dessous rend sélectivement les options d'une liste de sélection en appelant la méthode d'assistance avec la ligne isSelected region customerCompany:

    {{#if isSelected region customerCompany}}
        <option value={{region._id}} selected>{{region.name}}</option>
    {{else}}
        <option value={{region._id}}>{{region.name}}</option>
    {{/if}}

puis dans le fichier js:

isSelected: function (region, customer) {

    return customer.salesRegionId === region._id;
},

Cette approche consistant à transmettre vos variables à vos assistants est généralement recommandée pour éviter la confusion qui peut survenir avec la modification de la signification du mot clé this lors de l'utilisation de modèles.

4
tomRedox

La version actuelle de Blaze prend en charge else if - voir ci-dessous pour un exemple de format et une référence à la résolution du problème github.

{{#if isUserProfile}}
    <h3>User Profile</h3>
{{else if isLawyerProfile}}
    <h3>Lawyer Profile</h3>
{{else}}
    <h3>Test</h3>
{{/if}}

Lien de référence: GitHub Else If Issue Resoltion

1
Mike