angularjs: как обрабатывать всплывающее окно с директивой, чтобы данные поступали из модели контроллера

Предположим, у меня есть этот тег в URL-адресе шаблона, в который вводится HTML-код, полученный из модели (HTML в основном представляет собой ‹li› маркеры):

<div ng-bind-html="accident.description.impact"></div>

Часть модели выглядит следующим образом:

"cause": 

"<ul>\n\
    <li>\n\
    <div><span inline-popover \n\
        popover-html=\"Taper pour ouvrir la vue détaillée\" \n\
        popover-placement=\"bottom\" \n\
        popover-label=\"Larve de taupin\">Larve de taupin</span></div>\n\
    </li>\n\
    <li>Semences en cours de germination</li>\n\
</ul>",

Как видите, некоторые ‹li› содержат теги, позволяющие открывать всплывающее окно.

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

Есть идеи?


person Stéphane de Luca    schedule 25.04.2014    source источник
comment
Вам нужно скомпилировать партиал перед его использованием, Angular должен понимать, что в партиале есть директивы. Зайдите в $compile на сайте Angular.   -  person m.e.conroy    schedule 25.04.2014


Ответы (1)


Проблема здесь в том, что ng-bind-html просто выводит содержимое переменной. Здесь вам нужен компонент, который $compiles код заставит работать дополнительные директивы.

<div ng-compile-html="accident.description.impact"></div>

Javascript:

directives.directive("ngCompileHtml", function ($http, $compile)
{
    return {
        restrict: "A",
        scope: {
                "ngCompileHtml": "="            
        },
        link: function (scope, element)
        {
            var template = angular.element(scope.ngCompileHtml);
            $compile(template.contents())(scope);
            $(element).append(template);
        }
    };
});
person Konstantin Krass    schedule 25.04.2014
comment
Большое спасибо за Вашу помощь! @Константин Красс - person Stéphane de Luca; 26.04.2014