Я использую ng-grid с плагином csv, слегка измененным для поддержки Internet Explorer. Плагин создает ссылку и добавляет ее в нужное место в сетке. До моих изменений ссылка работала нормально, но не использовала никаких директив, только html. Теперь я использую директиву ng-csv, которая вообще не отвечает, хотя кнопка появляется, и html выглядит правильно при проверке. При нажатии кнопки должен быть загружен csv - прямо сейчас только с тестовыми данными, числами 5, 4 внутри.
Соответствующий код из функции ngGridCsvExportPlugin:
var fp = grid.$root.find(".ng-grid-buttons");
var csvDataLinkPrevious = grid.$root.find('.ng-grid-buttons .csv-data-link-span');
var csvDataLinkPrevious2 = grid.$root.find('.ngHeaderButton2');
if (csvDataLinkPrevious != null) {csvDataLinkPrevious.remove(); csvDataLinkPrevious2.remove(); }
var csvDataLinkHtml = "<div class='ngHeaderButton2'></div>";
csvDataLinkHtml += "<span type='button' ng-csv='[\"5\",\"4\"]' ng-hide='true' filename='data.csv' class='csv-data-link-span'><i class='fa fa-file-excel-o excel-icon'></i></span>";
fp.append(csvDataLinkHtml);
Используя следующий код, я могу внедрить скомпилированный HTML-код и увидеть, что он находится в DOM с помощью инструментов разработки, но я не вижу саму кнопку на странице:
$(function() {
angular.element(document).injector().invoke(function($rootScope, $compile) {
var link = $compile(csvDataLinkHtml);
csvDataLinkHtml = link(scope);
fp.append(csvDataLinkHtml);
});
});