Я пытаюсь прикрепить директиву ngBindHtml
в приложении в рамках функции ссылки директивы. Модуль, в котором директива находится впрыскивает ngSanitize
, как например:Добавление функции ngBindHtml с использованием .attr в функции ссылок не работает
angular.module('ui.bootstrap.contextMenu', ['ngSanitize'])
.directive('contextMenu', cm);
где cm
является функция директивы. Функция ссылка выглядит следующим образом:
var link = function ($scope, element, attrs) {
element.on('contextmenu', function (event) {
event.stopPropagation();
$scope.$apply(function() {
event.preventDefault();
var options = $scope.$eval(attrs.contextMenu);
var model = $scope.$eval(attrs.model);
if (options instanceof Array) {
if (options.length === 0) {
return;
}
renderContextMenu($scope, event, options, model);
} else {
throw '"' + attrs.contextMenu + '" not an array';
}
});
});
};
где renderContextMenu
эскизы из HTML, который будет прикреплен к телу страницы. В этой функции у меня есть следующие строки кода:
$div.attr('ng-bind-html', text);
$a.append($div);
, которые должны производить то, что выглядит как:
<a><div ng-bind-html="the text"></div></a>
и это делает. Проблема в том, что текст фактически не отображается. У кого-нибудь есть мысли по этому поводу?
вы пытаетесь напрямую манипулировать DOM, это не угловой способ сделать что-то. Это jQuery. То, что вы пытаетесь сделать, должно быть отсортировано с привязкой. Например, создав директиву для малого подмодуля и передав ему текст. – Etse
Этот комментарий я не понимаю. Из документации по директивам: * На высоком уровне директивы - это маркеры в элементе DOM (такие как атрибут, имя элемента, комментарий или класс CSS), которые сообщают компилятору HTML AngularJS ($ compile), чтобы связать указанное поведение с этим DOM (например, через прослушиватели событий) или даже для преобразования элемента DOM и его дочерних элементов. * И в этой [документации] (https://docs.angularjs.org/guide/directive) есть даже раздел под названием ** Создание Директивы, которая манипулирует DOM **. В приведенном выше коде используется jqLite, поставляемый с Угловой структурой. – cirrusio
Я считаю, что это связано с тем, как называется функция связи относительно производства DOM. – cirrusio