Тема: Snakeskin
Показать сообщение отдельно
  #59 (permalink)  
Старый 30.11.2013, 10:13
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Сообщение от nerv_ Посмотреть сообщение
А это должно работать? http://jsfiddle.net/NAPWB/5/
Не Вложенные шаблоны не допускаются, тебе надо было сделать что-то вроде:

{template foo.tpl(name)}
    <h1 onclick="bar.click(this)">Hello {name}!</h1>
    {call this.header.tpl(name, 'ещё параметр')}
{/template}

/// Можно смело использовать неймспейсы любой длины, т.к. Snakeskin создаст их если что
{template foo.header.tpl(name, header)}
     <h2>{header}</h2>
     <h3>{name}</h3>
{/template}


НО

Для повторного использования кода в шаблоне и его дочерних шаблонах есть прототипы, которые в отличии от вызова шаблона в шаблоне не создают зависимостей, т.е.

{template base(name)}
    {proto foo}
         121
    {/proto}

    {apply foo}
    {apply foo}
{/template}


Прототип может содержать в себе другие прототипы, блоки и т.д. В дочернем шаблоне можно переопределить и вызвать любой родительский прототип. Прототип не может вызывать сам себя, т.е.

{proto foo}
      {apply foo}
{/proto}


не получится И главное, в скомпилированном шаблоне прототипы никак не фигурируют и не создают никаких связей, т.е. они используются только на этапе трансляции.

http://habrahabr.ru/post/168093/ здесь довольно исчерпывающее описание прототипов, хотя сама статья уже местами устарела, т.к. писалась для версии 1 почти год назад, а ща уже 2.4
__________________
kobezzza
code monkey

Последний раз редактировалось kobezzza, 30.11.2013 в 10:47.
Ответить с цитированием