![]() я тут сижу пилю и думаю, а ну его нафиг лучше буду варнинг бросать а проблему автоматически решу, весь ui буду в таком стиле теперь делать чтобы хоть как-то работало а разработчику указ был. ![]() ВОТ как делают отцы!! п.с. человек не понимающий что тут написано не сделает этой ошибки =) плюсы: 1) сайт работает, хоть как-то 2) разработчику нет нужды ловить эксепшены на всякий случай. чтоб вы поняли, если в шаблоне если атрибут transclude то в конец этого элемента вставляется наша директива replase означает что мы шаблоном заменяем директиву, а transclude внутри шаблона говорит что в это место надо вставить оригинальный элемент, и вот если у нас restrict E то есть директива это "элемент" то парсер парся шаблон, обнаружит там директиву qq И повторит операцию с её заменой на шаблон. И все улетит в рекурсию. Грубо говоря мы директиву заменяем на шаблон, пихаем в середину шаблона эту самую директиву на место которой только что поставили шаблон, шаблон парсится директива находится внутри шаблона и снова заменяется на шаблон и попадает внутрь этого шаблона. и так вечно =) я просто меняю имя директивы чтобы хоть как-то работало и бросаю об этом варнинг. ![]() |
Maxmaxmaximus4, не совсем понял, а если будет так
<div> div </div> тоже заменит? |
Цитата:
restrict : 'EA' 'E' - элемент, 'A' - атрибут или 'AE' - и то и то ![]() ![]() пруф что работает: ![]() ![]() ну и вот: ![]() ![]() я replace true означает что мы именно заменяем директиву на шаблон, а не пихаем содержимое шаблона внутрь директивы как это по умолчанию) |
если replace true и в коде шаблона встречается элемент у которого есть атрибут transclude, то оригинальный элемент который мы заменили на шаблон помещяется в конец этого элемента с атрибутом transclude. Так вот, если у нас restrict E, то есть директива действует только на элементы, и есть шаблон и replace true, и внутри шаблона есть элемент у которого есть атрибут transclude то мы щитай заменяем директиву допустим <qq></qq> на шаблон, потом вставляем её в шаблон, парсим шаблон, и парсер снова находит директиву и заменяет её, и рекурсия, ну ты понял. в случае если директива - атрибут, то я просто его удаляю, а тут имя элемента ни как не удалить.
|
Дзен-трансгуманист, а у меня есть сервис, угадай как называется)?
$exeption он короче будет заниматься выводом ошибок на разных языках, выдает ссылки на форум по решению этой проблемы или ссылку на доки, и проче, сможет отсылать ошибки на сервер с кодами и.т.п. так же люди смогут использовать его внутри своих проектов чтобы пользователям допустим на экран ошибку выводить и прочее. но пока я его не юзаю, и наверное зря, потом придется все throw и console.warn искать в коде и на него заменять=) к слову юзать его оч просто, просто берешь и пишешь в коде ui.service('$exeption')('*',function(error, type){ ui.service('$http')('errors.php',{error:error,type:type}); //errors.php?error=text&type=type }) // бросаем ошибку ui.service('$exeption')('error text','type') это конечно грубо но я просто суть показал |
Дзен-трансгуманист, кстати знаешь почему я его не юзаю? потому что строку где произошла ошибка показывает не ту где ошибка а ту где код сервиса $exeption, и вот это бесит. по крайней мере когда ты программируешь и баги ловишь. а когда как пользователь сидишь то наверное уже удобно.
|
Цитата:
|
в смысле если не повесишь на него обработчик то ни чо не будет выводить) а так просто вешаешь
ui.service('$exeption')(function(error,type){ console.error(type+': '+error) }) |
Дзен-трансгуманист, вы немного не поняли $exeption ловит и обычные ошибки которые throw если их бросли какие-то сервисы или чо-то такое. я просто для примера показал что можно вызвать ошибку вручную =)
|
Цитата:
Цитата:
|
Часовой пояс GMT +3, время: 15:17. |