Je travaille sur l'application Ionic2. J'appelle une fonction à partir d'une page. Est-il possible que j'utilise un nom de variable dans l'appel de fonction. par exemple.

Code d'origine: this._userDataService.getGrandQuestionsFromServer(this.passedId, newLevel)

Code attendu ::

this._userDataService.get`${this.questionModuleName}`QuestionsFromServer(this.passedId, newLevel) 
2
raju 20 avril 2017 à 03:48

3 réponses

Meilleure réponse

Vous devriez pouvoir y parvenir avec la notation entre crochets. Voici un exemple de travail:

const obj = {
  foobar(arg) {
    console.log(arg);
  }
};

const bar = "bar";
obj[`foo${bar}`]("It works!");

Dans votre code, veuillez essayer ceci:

this._userDataService[`get${this.questionModuleName}QuestionsFromServer`](this.passedId, newLevel)
5
Badacadabra 20 avril 2017 à 01:14

Il existe une fonctionnalité appelée Tagged template literals

Une forme plus avancée de littéraux de modèle est taguée template littéraux. Les balises vous permettent d'analyser les littéraux de modèle avec une fonction. Le premier argument d'une fonction de balise contient un tableau de chaîne valeurs. Les arguments restants sont liés aux expressions. dans le fin, votre fonction peut renvoyer votre chaîne manipulée (ou elle peut retourne quelque chose de complètement différent comme décrit dans la suite exemple). Le nom de la fonction utilisée pour la balise peut être nommé tout ce que vous voulez. MDN - Chaînes de modèles

Vous pouvez l'utiliser pour prétraiter la chaîne et générer l'appel de fonction souhaité.

0
Ahmed Hashem 20 avril 2017 à 00:58

Sûr que vous pouvez:

class A {
  callFunction(name:string) {
    this[`get${name}`](name);
  }

  getAmount(name: string) {
    alert(name);
  }
}

let a = new A();
a.callFunction('Amount');
0
Julia Passynkova 20 avril 2017 à 01:04