2016-06-09 10 views
1

Ich habe diese Konstante:Wie kann ich innerhalb es6 Template Strings ersetzen Konstanten

.constant('SOMETHING', { 
    name: `${name}`, 
    subject: `${surname}`, 
}) 

Wenn ich das versuche zu tun Beispiel SOMETHING.name es sagt, dass es nicht definiert ist.

Irgendwelche Ideen, wie ich Vorlagenstrings speichern und dann verwenden kann?

Vielen Dank im Voraus.

+0

Es ist nicht 'undefined', es ist'“ undefined "' - es gibt keine 'name' Variable irgendwo in deinem Code. – Bergi

+0

"* Wie kann ich Template-Strings speichern und dann verwenden? *" Klingt wie ein Duplikat von [Ausführung für ES6 Template Strings verzögern] (http://stackoverflow.com/q/22607806/1048572), nein? – Bergi

+0

Nichts mit diesem @Bergi zu tun. Ich frage, wie Sie Vorlage Literale in Konstanten verwenden können und sie dann verwenden, indem Sie die Konstante einschließen. – pap

Antwort

2

Dies ist kein Feature, das ES6-Vorlagenliterale bereitstellen.

es6-template Paket kann verwendet werden, um reguläre JS-Zeichenfolge mit Template-Literalsyntax zu interpolieren. An dieser Stelle hat die ES6-Vorlage-Literalsyntax keine wirklichen Vorteile gegenüber anderen Vorlagen-Engines.

Wenn der Kontext der Rahmen ist (Ich gehe davon aus, dass constant steht für AngularJS konstanten Service), kann es von Vorteil Vorlage Einrichtungen zu nutzen, die den Rahmen bietet, dh

app.constant('SOMETHING', { 
    name: '{{ name }}', 
    ... 
}); 

app.run((SOMETHING, $interpolate) => { 
    let somethingName = $interpolate(SOMETHING.name)({ name: 'name' }); 
    ... 
}); 
+0

Scheint so, als gäbe es keine Möglichkeit, dies zu tun, es sei denn, Sie verwenden entweder das, was Sie angegeben haben, oder indem Sie eine Ersetzungsfunktion erstellen, die $ {durch den angegebenen Wert ersetzt. Vielen Dank. – pap

+0

Template-Literal-Syntax ist einfach genug, also ja, Vorlagen können mit Regexps geparst werden, das ist es, was 'es6-template' grundsätzlich tut. – estus