Я создаю html
после получения ответа ajax
, например:
var html = '';
html = '<div ng-click="deleteRecord($event)">delete</delete>';
$('.main).append(html);
Но директива ng-click
не работает там, где она отлично работает при непосредственном добавлении в html-документе. Я не очень понимаю, как угловые привязки к DOM.
Так что мне нужна поддержка для понимания, могу ли я сделать эту работу, когда добавляю html
через jquery
?
Благодарю.
Вместо добавления HTML к вашему элементу вы можете использовать директиву bindHtml, включенную в Угловые библиотеки по умолчанию.
<div data-ng-bind-html="someHtml"></div>
Просто примените строку HTML к свойству someHtml вашего контроллера, и он должен работать нормально. Обязательно включите ngSanitize (или "$ sanitize") в свой контроллер, так как это гарантирует, что не может быть вставлен повреждающий HTML.
Попробуй это:
$('.main').append($compile(html)($scope));
$scope.$apply();
Надеюсь, поможет.
PD: Я пытаюсь избежать jQuery при использовании Angular.
Вы можете вызвать $apply()
после вставки вашего HTML. Это заставляет углы повторно переваривать привязки.
var html = '';
html = '<div ng-click="deleteRecord($event)">delete</delete>';
$('.main).append(html);
$scope.$apply();