Проблема я столкнулся в Я получаю данные от сервера, имеющего содержание HTMLнг-связывать-HTML, чтобы предотвратить выполнение сценариев в содержимом
<p> hello <a class='mention'data-id='1'>Amerr</a></p>
С нг-связывать-HTMLSantaize, и он удалит все потенциальные угрозы, а также атрибуты, такие как data-id = '1'. Что мне нужно для моих указаний. Поэтому я использую
- $ компилировать для моей директивы действовать на якорь тега.
- $ sce.trustAsHtml, чтобы вернуть код.
так что если есть какой-либо текст, как
"<p> {{axy}} /p>\n"
$compile(html_code)($scope)
Это будет выполнять код и вызывает угловое выполнить выражение вызывает проблемы. Помогите мне решить эту проблему.
var controller= app.controller('Homecontrol', function($scope) {
$scope.body = socket.emit('hello');
$scope.to_trusted = function(html_code) {
if (/<[a-z][\s\S]*>/i.test(html_code)) {
var a = $compile(html_code)($scope);
return $sce.trustAsHtml(a[0].innerHTML);
} else {
return html_code;
}
}
});
app.directive('mention', function(){
return {
restrict: 'AEC',
transclude: true,
template: '<a ng-transclude ></a>',
replace: true,
}
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.22/angular.min.js"></script>
<p ng-bind-html=toTrust(body) ></p>
У вас есть контроль над данными, которые поступают с сервера? –
Я не понял. Нужно ли компилировать или сохранять только атрибуты data- *? –
Мне нужно скомпилировать текст, чтобы директива Angular действовала на строку, содержащую тег Link. но если строка содержит «{{}}« угловое выражение. компилятор пытается выполнить это выражение., которое вызывает problen @MarcusHenrique – Amerrnath