2016-06-09 3 views
1

У меня есть эта константа:Как я могу заменить ES6 строки шаблонов внутри константы

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

Когда я пытаюсь сделать это, например SOMETHING.name он говорит, что это не определено.

Любые идеи, как я могу хранить строки шаблонов, а затем использовать их?

спасибо, что заранее.

+0

Это не 'undefined', это'» undefined "' - в вашем коде нет переменной 'name'. – Bergi

+0

"* как я могу хранить строки шаблона, а затем использовать его? *" Звучит как дубликат [Выполнение отсрочки для шаблонов шаблонов ES6] (http://stackoverflow.com/q/22607806/1048572), нет? – Bergi

+0

Ничего общего с этим @Bergi. Я спрашиваю, как использовать шаблонные литералы в константах, а затем использовать их, включая константу. – pap

ответ

2

Это не функция, предоставляемая литералами шаблонов ES6.

es6-template пакет может использоваться для интерполяции обычной строки JS с синтаксисом шаблона литерала. На данный момент синтаксис шаблона шаблона ES6 не имеет реальных преимуществ по сравнению с другими механизмами шаблонов.

Если контекст рамки (я предполагаю, что constant обозначает AngularJS постоянной службы), он может выгодно использовать шаблонные объекты, которые рамочные предложения, т.е.

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

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

Кажется, что вы правы, нет никакого способа сделать это, если вы не используете то, что вы поставили, или создаете функцию замены, которая заменяет $ {} на поставляемое значение. Большое спасибо. – pap

+0

Типичный синтаксис шаблона достаточно прост, поэтому да, шаблоны могут быть проанализированы с помощью регулярных выражений, вот что делает 'es6-template' в принципе. – estus