Пользовательский тег директивы, не запускающий код директивы, в angularjs 1.2.29

0

Я пытаюсь использовать директиву элемента (ограничивать: "E") для определения настраиваемого компонента. Вот мой шаблон page.html, который вставляется в index.html через директиву ng-view:

<eng-popup>This text appears, but is rendered in a span</eng-popup>

Угловой запуск IS; index.html имеет директиву ng-app="templatesApp" в теге body, а app.js устанавливает модуль следующим образом:

var app = angular.module("templatesApp", ['ngRoute']);

Далее, в app.js у меня есть директива popup, определенная:

app.directive('engPopup', function() {
    console.log("This console log does not trigger. I have tried 'eng-popup' as the directive first parameter, but that doesn't work either.");
    return {
        restrict: 'E',
        transclude: false,
        template: '<div id="thisDoesNotEvenAppear"></div>'
    };
});

Проблема в том, что когда я смотрю на полученный html компонент, он выглядит так:

<span class="ng-scope" jQuery110209261664696867675="7">This text should appear, surely</span>
</eng-popup class="ng-scope" jQuery110209261664696867675="8"><//eng-popup>

Поэтому у меня есть несколько вопросов:

Почему вызов команды eng-popup console.log НЕ запускается?

Почему содержимое тега eng-popup заканчивается в span?

И самое загадочное из всего, почему тег eng-popup начинается с тега END и заканчивается тегом с двумя косой чертой?

Наконец, что я испортил, чтобы все это произошло?

РЕДАКТИРОВАТЬ
В соответствии с просьбой, здесь Plunker. Похоже, что в этой упрощенной версии проблем span и end-tag не происходит, но директива eng-popup по-прежнему не запускается:
https://plnkr.co/edit/mVa6Mye5besJAtWihMWF?p=preview

RE-EDIT
На всякий случай это все еще разрешимо, вот последний Plunkr, который я смог собрать. Он не работает, что, по крайней мере, имеет общее с нашим реальным проектом. Не уверен, что это же проблема.
https://plnkr.co/edit/sJoYnYjqx9ZGIH0KhObC

  • 0
    Пожалуйста, добавьте плункер с данной угловой версией
  • 0
    Я удалил ngRoute в вашем коде, потому что вы не определили зависимость. И добавил немного текста внутри шаблона, например. <div id = "thisDoesNotEvenAppear"> ABC </ div>. Он отлично работает, отображая «ABC». Журнал консоли направляется на консоль браузера. Проверьте, осмотрев хром. Просьба разработать точную проблему.
Показать ещё 2 комментария

2 ответа

0

Итак, коллега отметил, что он "работает" в Chrome. Оказывается, это проблема IE8. Кто бы мог подумать... (вся причина, по которой мы используем 1.2.29, состоит в том, что многие из наших пользователей будут получать доступ к ней через IE8, но похоже, что пользовательские директивы находятся за пределами таблицы).

0

Я немного изменил ваш пример (очень мало), и, похоже, он работает нормально?

https://plnkr.co/edit/3NlHNDOCBVRktk3ZcsnV?p=preview

Что я сделал, удалите требование ui-router, так как вы не добавили ссылку на скрипт. После этого он работает. Итак, вы включаете ui-router в свой проект правильно?

  • 0
    Дополнительным уровнем сложности для моего реального проекта является то, что мы настроили маршруты в app.config. Когда я вынимаю ngRoute из моего модуля приложения, ничего не работает. Вы упоминаете UI-роутер; Мы используем ngRoute. Это проблема?
  • 0
    Наверное, тогда возникает вопрос: как бы я правильно включил в свой проект ui-router?
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню