Olá, tenho um jQuery DataTable, que ao abrir o detalhe, exemplo, mostra algumas informações e também um link (href), onde é pra chamar uma função do angular, mas ao clicar nada acontece.
function table(dados) { $ scope.listaDadosGrid = dados; console.log(dados); function format(d) { // `d` is the original data object for the row var html = '<div class="demo-button3"> '+ '<a ng-click="gerarDacte(' + d.documentoCodigo + ');" class="btn btn-icon btn-sm btn-twitter mr5"><i class="fa fa-twitter"></i> Twitter </a> ' + '<br>' + '</div> ' + '<table cellpadding="5" cellspacing="0" border="0" width="100%" style="padding-left:20px;">' + '<tr>' + '<td><span class="h5 bold">Contrato:</span></td>' + '<td>' + d.contratoNumero + '</td>' + '</tr>' + '<tr>' + '<td><span class="h5 bold">Viagem:</span></td>' + '<td>' + d.viagemNumero + '</td>' + '</tr>' + '<tr>' + '<td><span class="h5 bold">Chave:</span></td>' + '<td>' + d.documentoChave + '</td>' + '</tr>' + '<tr>' + '<td><span class="h5 bold">Placa do Cavalo:</span></td>' + '<td>' + d.viagemPlacaCavalo + '</td>' + '</tr>' + '<tr>' + '<td><span class="h5 bold">Placa da Carreta:</span></td>' + '<td>' + d.viagemPlacaCarreta + '</td>' + '</tr>' + '<tr>'; if (d.financeiroCodigo > 0) { html = html + '<td><span class="h5 bold">Documento Financeiro:</span></td>' + '<td><a style="color: #4682B4" href="#/financeiro/extrato/' + d.financeiroCodigo + '" target="_blank" >' + d.financeiroDocumento + '</a></td>' + '</tr>'; } else { html = html + '<td><span class="h5 bold">Documento Financeiro:</span></td>' + '<td>' + d.financeiroDocumento + '</td>' + '</tr>'; } html = html + '</table>'; return html; }; var selecionados = []; $ (document).ready(function (data) { var table = $ ('#tableDocumentos').DataTable({ aaData: dados, language: { url: "//cdn.datatables.net/plug-ins/1.10.15/i18n/Portuguese-Brasil.json", decimal: ",", thousands: "." }, deferRender: true, bAutoWidth: false, bProcessing: true, bDeferRender: true, createdRow: function (row, data, dataIndex) { $ compile(angular.element(row).contents())($ scope); }, columnDefs: [{ targets: 0, searchable: false, orderable: false, checkboxes: { selectRow: true }, }], select: { style: 'multi' }, sAjaxDataProp: "", bDestroy: true, order: [[2, "asc"]], columns: [ { data: "documentoCodigo", className: "dt-body-center", orderable: false }, { className: 'details-control', orderable: false, data: null, defaultContent: '' }, {data: "beneficiarioCnpj", width: "13%"}, { data: "documentoDataEmissao", "type": "date", "render": function (data) { if (data !== null) { var javascriptDate = new Date(data); var day = javascriptDate.getDate().toString(); day = ('00' + day).substring(day.length); var month = (javascriptDate.getMonth() + 1).toString(); month = ('00' + month).substring(month.length); var year = javascriptDate.getFullYear().toString(); javascriptDate = day + "/" + month + "/" + year; return javascriptDate; } else { return ""; } } }, {data: "documentoTipo", width: "10%"}, {data: "documentoNumero", width: "8%"}, {data: "documentoSerie", width: "6%"}, {data: "destinatarioMunicipio", width: "15%"}, {data: "remetenteMunicipio", width: "15%"}, { data: "documentoValor", "type": "decimal", "render": $ .fn.dataTable.render.number('.', ',', 2), width: "4%", orderable: false }, { data: "documentoValorPositivo", type: "decimal", render: $ .fn.dataTable.render.number('.', ',', 2), width: "8%", orderable: false }, { data: "documentoValorNegativo", type: "decimal", render: $ .fn.dataTable.render.number('.', ',', 2), width: "8%", orderable: false }, { data: "documentoValorAdiantamento", type: "decimal", render: $ .fn.dataTable.render.number('.', ',', 2), width: "20%", orderable: false } ] }); $ ('#tableDocumentos tbody').on('click', 'td.details-control', function () { var tr = $ (this).closest('tr'); var row = table.row(tr); if (row.child.isShown()) { // This row is already open - close it row.child.hide(); tr.removeClass('shown'); } else { // Open this row row.child(format(row.data())).show(); tr.addClass('shown'); } }); $ ('#frmRequisicaoGrid').on('submit', function (e) { var form = this; $ scope.itensSelecionados = []; var rows_selected = table.column(0).checkboxes.selected(); selecionados = [ // Iterate over all selected checkboxes $ .each(rows_selected, function (index, rowId) { // Create a hidden element Id: rowId.id; }) ]; if (selecionados[0].length === 0) { $ scope.showNoty('Selecione um ou mais itens', 'warning'); } else { angular.forEach(selecionados[0], function (value) { this.push(parseInt(value, 0)); }, $ scope.itensSelecionados); } var requisicao = $ scope.postRequisicao.requisicaoTipo; $ scope.postRequisicao = { id: $ scope.itensSelecionados, requisicaoTipo: requisicao }; $ scope.requisitarXMLSelecao(); // Prevent actual form submission e.preventDefault() }); $ ("#preloader").addClass("ng-hide"); $ ("#btnConsultar").attr("disabled", false); }); }
Função gerarDacte
$ scope.gerarDacte = function (idDocumentoLogistico) { $ ("#preloader").removeClass("ng-hide"); var data = { codigoFinanceiroFndocumentos: 0, codigoLogisticaGlgldocumentos: idDocumentoLogistico }; $ http({ method: 'PUT', url: '/sc/getGerarDacte', data: data, responseType: 'arraybuffer' }).then(function (response) { var file = new Blob([response.data], {type: 'application/pdf'}); var url = URL.createObjectURL(file); $ ("#preloader").addClass("ng-hide"); window.open(url, '_blank'); }, function (response) { console.log(response.data); $ scope.showNoty('Não foi possível gerar Dacte.', 'error'); $ ("#preloader").addClass("ng-hide"); }); }
Agradeço qualquer ajuda bem vinda!