Мы много работаем над динамическими директивами в нашем проекте Angular, и одна вещь, которая пришла в голову как хороший, была способом иметь общую директиву, которая может перечислять множество разных типов подобных объекты (например, сообщения, пользователи, комментарии и т.д.), делегируя конкретные директивы на основе типов объектов.
Мы называем эту директиву object-list
, и мы надеемся делегировать ее по нескольким различным директивам, если мы сможем заставить ее работать правильно.
Основная проблема, которую нам необходимо решить, заключается в том, существует ли в нашей системе директива, предоставленная этой директивой object-list
. То, как мы проверяем это, выдает $compile
против целевой директивы, связывая ее с областью действия и проверяя ее содержимое HTML (например, var tmpElement = $compile('<div my-message'></div>')(scope);
). Кажется, что это работает, когда шаблон для целевой директивы ссылается на параметр template
, но когда мы вместо этого пытаемся указать на templateUrl
, содержимое HTML пусто.
Здесь Plunker, с подходом templateUrl
(не работает). Вы можете прокомментировать это и раскомментировать строку template
, чтобы увидеть оповещение.
http://plnkr.co/edit/wD4ZspbGSo68v4eRViTp
Есть ли другой способ проверить существование директивы? Я признаю, это выглядит немного взломанным.