11.12.2013, 02:32
|
Кандидат Javascript-наук
|
|
Регистрация: 08.12.2013
Сообщений: 142
|
|
я тут сижу пилю
и думаю, а ну его нафиг
лучше буду варнинг бросать а проблему автоматически решу, весь ui буду в таком стиле теперь делать чтобы хоть как-то работало а разработчику указ был.
ВОТ как делают отцы!!
п.с. человек не понимающий что тут написано не сделает этой ошибки =)
плюсы:
1) сайт работает, хоть как-то
2) разработчику нет нужды ловить эксепшены на всякий случай.
чтоб вы поняли, если в шаблоне если атрибут transclude то в конец этого элемента вставляется наша директива
replase означает что мы шаблоном заменяем директиву, а transclude внутри шаблона говорит что в это место надо вставить оригинальный элемент, и вот если у нас restrict E то есть директива это "элемент" то парсер парся шаблон, обнаружит там директиву qq И повторит операцию с её заменой на шаблон. И все улетит в рекурсию. Грубо говоря мы директиву заменяем на шаблон, пихаем в середину шаблона эту самую директиву на место которой только что поставили шаблон, шаблон парсится директива находится внутри шаблона и снова заменяется на шаблон и попадает внутрь этого шаблона. и так вечно =) я просто меняю имя директивы чтобы хоть как-то работало и бросаю об этом варнинг.
Последний раз редактировалось Maxmaxmaximus4, 11.12.2013 в 02:42.
|
|
11.12.2013, 02:44
|
|
I am Student
|
|
Регистрация: 17.12.2011
Сообщений: 4,415
|
|
Maxmaxmaximus4, не совсем понял, а если будет так
<div> div </div>
тоже заменит?
__________________
Цитата:
|
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
|
|
|
11.12.2013, 02:51
|
Кандидат Javascript-наук
|
|
Регистрация: 08.12.2013
Сообщений: 142
|
|
Сообщение от cyber
|
тоже заменит?
|
не, короче можно создавать директивы двух типов атрибуты и элементы
restrict : 'EA'
'E' - элемент, 'A' - атрибут или 'AE' - и то и то
пруф что работает:
ну и вот:
я replace true означает что мы именно заменяем директиву на шаблон, а не пихаем содержимое шаблона внутрь директивы
как это по умолчанию)
Последний раз редактировалось Maxmaxmaximus4, 11.12.2013 в 02:54.
|
|
11.12.2013, 02:56
|
Кандидат Javascript-наук
|
|
Регистрация: 08.12.2013
Сообщений: 142
|
|
если replace true и в коде шаблона встречается элемент у которого есть атрибут transclude, то оригинальный элемент который мы заменили на шаблон помещяется в конец этого элемента с атрибутом transclude. Так вот, если у нас restrict E, то есть директива действует только на элементы, и есть шаблон и replace true, и внутри шаблона есть элемент у которого есть атрибут transclude то мы щитай заменяем директиву допустим <qq></qq> на шаблон, потом вставляем её в шаблон, парсим шаблон, и парсер снова находит директиву и заменяет её, и рекурсия, ну ты понял. в случае если директива - атрибут, то я просто его удаляю, а тут имя элемента ни как не удалить.
Последний раз редактировалось Maxmaxmaximus4, 11.12.2013 в 02:58.
|
|
11.12.2013, 03:00
|
Кандидат Javascript-наук
|
|
Регистрация: 08.12.2013
Сообщений: 142
|
|
Дзен-трансгуманист, а у меня есть сервис, угадай как называется)?
$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')
это конечно грубо но я просто суть показал
Последний раз редактировалось Maxmaxmaximus4, 11.12.2013 в 03:08.
|
|
11.12.2013, 03:11
|
Кандидат Javascript-наук
|
|
Регистрация: 08.12.2013
Сообщений: 142
|
|
Дзен-трансгуманист, кстати знаешь почему я его не юзаю? потому что строку где произошла ошибка показывает не ту где ошибка а ту где код сервиса $exeption, и вот это бесит. по крайней мере когда ты программируешь и баги ловишь. а когда как пользователь сидишь то наверное уже удобно.
|
|
11.12.2013, 03:13
|
|
I am Student
|
|
Регистрация: 17.12.2011
Сообщений: 4,415
|
|
Сообщение от Maxmaxmaximus4
|
$exeption он короче будет заниматься выводом ошибок на разных языках,
|
только пусть лучше будет выводить подобные ошибки только в режиме дебага.
__________________
Цитата:
|
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
|
|
|
11.12.2013, 03:15
|
Кандидат Javascript-наук
|
|
Регистрация: 08.12.2013
Сообщений: 142
|
|
в смысле если не повесишь на него обработчик то ни чо не будет выводить) а так просто вешаешь
ui.service('$exeption')(function(error,type){
console.error(type+': '+error)
})
|
|
11.12.2013, 03:33
|
Кандидат Javascript-наук
|
|
Регистрация: 08.12.2013
Сообщений: 142
|
|
Дзен-трансгуманист, вы немного не поняли $exeption ловит и обычные ошибки которые throw если их бросли какие-то сервисы или чо-то такое. я просто для примера показал что можно вызвать ошибку вручную =)
|
|
11.12.2013, 03:34
|
Кандидат Javascript-наук
|
|
Регистрация: 08.12.2013
Сообщений: 142
|
|
Сообщение от Дзен-трансгуманист
|
Так потому что именно оттуда, где код сервиса, и происходит выброс.
|
спасибо кэп =) и происходит не выброс, а console.error()
Сообщение от Дзен-трансгуманист
|
которая собирает их имена и сам стек
|
нооо, ведь это хром автоматически делает О_О каждый обьект Error имеет stark и посмотреть его можно если ты делаешь console.error(errorObj) то в консоли где ошибка стрелочка появляется и там стек показывает) кэп
Последний раз редактировалось Maxmaxmaximus4, 11.12.2013 в 03:36.
|
|
|
|