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)
3 réponses
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)
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é.
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');
Questions connexes
De nouvelles questions
angular
Questions sur Angular (à ne pas confondre avec AngularJS), le framework web de Google. Utilisez cette balise pour les questions angulaires qui ne sont pas spécifiques à une version individuelle. Pour l'ancienne infrastructure Web AngularJS (1.x), utilisez la balise angularjs.