2017-04-20 11 views
0

Ich arbeite an Ionic2 App. Ich rufe eine Funktion von einer a-Seite an. Ist es möglich, dass ich einen Variablennamen im Funktionsaufruf verwende? z.B.Aufrufen einer in einer Variablen benannten Typoskript-Funktion

Original-Code: this._userDataService.getGrandQuestionsFromServer(this.passedId, newLevel)

erwartet Code ::

this._userDataService.get`${this.questionModuleName}`QuestionsFromServer(this.passedId, newLevel) 

Antwort

1

sollten Sie in der Lage sein, diese Notation mit Halterung zu erreichen. Hier ist ein funktionierendes Beispiel:

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

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

In Ihrem Code, bitte versuchen Sie dies:

this._userDataService[`get${this.questionModuleName}QuestionsFromServer`](this.passedId, newLevel) 
0

Es gibt eine Funktion namens Tagged template literals

Eine erweiterte Form von Vorlagenliteralen sind getaggte Vorlage Literale. Mit Tags können Sie Vorlagenliterale mit einer Funktion analysieren. Das erste Argument einer Tag-Funktion enthält ein Array von String-Werten . Die verbleibenden Argumente beziehen sich auf die Ausdrücke. Im Ende kann Ihre Funktion Ihre manipulierte Zeichenkette zurückgeben (oder es kann etwas völlig anderes zurückgeben, wie im folgenden Beispiel beschrieben). Der Name der für das Tag verwendeten Funktion kann wie folgt lauten: . MDN - Template strings

Sie können es die Zeichenfolge Vorprozess verwenden und erzeugen die Funktion aufrufen, die Sie wollen.

0

sicher, Sie können:

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

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

let a = new A(); 
a.callFunction('Amount'); 
Verwandte Themen