Цитата:
- template foo() # script var a = {}; /// Не будет ошибки т.к. мы используем расширенный синтаксис Цитата:
|
Цитата:
|
Еще небольшой вопрос, если позволите.
< some создаем тег some - some ? простая директива? # some расширенная директива? Почему спрашиваю. Встала задача, которую пока не решил, и пропустил. В переменной приходит селектор, который должен раскрыться в тег Например span.some Сейчас использую вот так (класс вручную, а в переменной только класс) < span (class = ${ @markup.spanClass }) { @markup.spanText } А вот так не получилось < ${ @spanSelector } { @markup.spanText } Тк на выходе получал <span.some>span text</span.some> :)) {tag ${ @spanSelector }} Hello world {/tag} Результат тот же |
Цитата:
- tag some Даст такой же ответ. Сокращённые варианты есть лишь у некоторых директив и преследуют исключительно цель удобства написания Цитата:
- template foo() - var bla = 1 - bla /// 1 - bar = 2 /// создаст константу bar Цитата:
Цитата:
< span.${ @markup.spanClass } И зачем взял в круглые скобки? Цитата:
< ${tagName}#${idName}.${className1}.${className2} Интерполяция также работает и при ручном задание атрибутов < span ${attr1} = ${attrVal1} А также можно использовать интерполяцию с объектом: - var attrs = { foo: 1, bar: 2 } < .foo ${attrs} |
Спасибо за подробное объяснение.
Т.е раскрыть строку span.some в тег с классом не выйдет? |
Цитата:
- template foo(selector) /// Сокращение для - var : chunks = selector.split('.') < ${ chunks[0] }.${ chunks[1] } Или более универсальный вариант (если классов много) - template foo(selector) : chunks = selector.split('.') < ${ chunks[0] } сlass = ${ chunks.slice(1).join(' ') } |
И в догонку :)
Почему? < span ${attr1} = ${attrVal1} Но < span {attr1} = {attrVal1} |
Цитата:
< .foo & bla = 1 | baz = 2 . Если использовать классический синтаксис, то это не нужно. {< .foo bla = 1 | baz = 2 }{/} |
А стоп, не понял вопрос сначала. Ты спрашиваешь почему ${} и {}?
Потому что ${} - это синтаксис интерполяции, т.е. мы внутрь инструкции вставляем живые значения, а {} - это просто декларация директивы < ${'foo'} {a} - {b} Тоже самое на классическом синтаксисе {< ${'foo'}} {a} - {b} {/} А разный синтаксис по 2-м причинам: 1) Визуальное отличие, чтобы не запутаться 2) Чтобы не было конфликтов с использованием {} блоков внутри директивы, например /// <div class="foo" bla="{a: 1, b: 2}"></div> < .foo bla = {a: 1, b: 2} |
Понял. спасибо!
Хорошего дня |
Часовой пояс GMT +3, время: 01:06. |