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

Стоп, я тебя не понял, какая бага?

Цитата:
В test_html.ss.js нет, т.к. там ты объявил прототип, но нигде не вызывал и сборщик мусора SS декларацию выпилил, т.к. она не нужна оказалась.
Это объяснения я писал для случая, когда ты умышленно уничтожаешь унаследованный прототип в родительском блоке и это абсолютно нормальное и логично поведение и я показал, как можно этого избежать: просто использовать super или явно вынести прототип за пределы родительского блока в родительском или дочернем шаблоне.

Я объяснил ситуацию, привёл примеры и решения, что ты ещё хочешь то?

{template base()}
  {block bar}
    {proto e()}
        1
    {/}
  {/}
{/}

{template child() extends base}
  {block bar}
    fffffuuuu
  {/}
{/}


Неужели ты не видишь, что в дочернем шаблоне ты переопределил блок bar и всё его старое содержимое было законно уничтожено.
Если ты хочешь доопределить - то просто используй super

{template child() extends base}
  {block bar}
     {super}
     fffffuuuu
  {/}
{/}


Это самый логичный способ.

Есть ещё способ 2, который я также уже описывал, но который я бы не рекомендовал, т.к. на мой взгляд он не такой очевидный - это вынести прототип из родительского блока:

{template child() extends base}
  {proto e()}
    {super}
  {/}

  {block bar}
     fffffuuuu
  {/}
{/}


Здесь ты переопределил блок bar, но также явно вынес прототип.

Цитата:
Если это критическая бага шаблонки, то вопрос снимается. Просто не понимаю, зачем нужен вотчер, если приходиться пересобирать все вручную.
Причём тут вотчер? Я совсем потерял нить твоего вопроса.
__________________
kobezzza
code monkey

Последний раз редактировалось kobezzza, 19.02.2015 в 23:33.
Ответить с цитированием