使用 pdfobject 将 pdf 置于模态 bootstrap - 递增文件
Placing pdf in modal bootstrap with pdfobject - incrementing files
我正在尝试以模式显示 pdf bootstrap。我在我的应用程序中使用 datatables,我的 table 的头部由文档标题、类别、日期和文档视图组成。在“查看文档”列的 body 中,我有一个按钮,当用户单击该按钮时,会打开一个模式,并且在其中也会打开 pdf。
我的 table 中的每一行都有一个不同的 pdf 文档,这是我的问题,我无法将引用每一行的 pdf 放入其各自的模式中。在任何行打开的 pdf 始终是我 table.
中添加的最后一个文档
在那个应用程序中,我使用 firebase,pdfobject 插件来添加 pdf 和 bootstrap 用于模态。
我的代码如下:
Javascript:
<script type="text/javascript">
var documentosRef = firebase.database().ref('documentos');
function initFirebase(){
function carregaDocumentos(){
documentosRef.on('value', function(data){
headertb = isAdmin ? "<th>Título</th><th>Data de Inclusão</th><th>Categoria</th><th>Editar</th><th>Excluir</th>" : "<th>Título</th><th>Data de Inclusão</th><th>Categoria</th><th>Visualizar</th>";
$('#tableCustom thead tr').html(headertb);
$("#tableCustom").dataTable().fnDestroy();
$('#tableCustom tbody').html('');
for(var key in data.val()){
documento = data.val()[key]
if(isAdmin){
linha = "<tr>"+
"<td>"+documento.titulo+"</td>"+
"<td>"+documento.data_inicio+"</td>"+
"<td>"+documento.categoria+"</td>"+
"<td class='edit'><a href='documentos/"+key+"/edit'><i class='fa fa-edit'></i></a></td>"+
"</tr>";
$('#tableCustom tbody').append(linha);
}
else{
linha = "<tr>"+
"<td>"+documento.titulo+"</td>"+
"<td>"+documento.data_inicio+"</td>"+
"<td>"+documento.categoria+"</td>"+
"<td class='view'><a data-toggle='modal' data-target='#myModal'><i class='fa fa-eye'></i></a></td>"+
"</tr>";
$('#tableCustom tbody').append(linha);
PDFObject.embed(documento.arquivo, ".modal-content");
}
}
closeLoader();
var table = $('#tableCustom').DataTable({
"aaSorting": [[ 0, "asc" ]],
"oLanguage": {
"sUrl": "/datatable_pt.txt"
},
"aoColumnDefs": [
{ "bSortable": true, "aTargets": [ 0 ] },
{ "bSearchable": true, "aTargets": [ 0, 1, 2 ] }
]
});
$("#select-categories").each( function ( i ) {
var select = $('<select><option value=""></option></select>')
.appendTo( $(this).empty() )
.on( 'change', function () {
table.column( [2] )
.search( $(this).val() )
.draw();
} );
table.column([2]).data().unique().sort().each( function ( d, j ) {
select.append( '<option value="'+d+'">'+d+'</option>' )
} );
} );
});
}
carregaDocumentos();
}
</script>
HTML:
<div id="body">
<header>
Documentos
</header>
<section>
<div class="modal fade" id="myModal" role="dialog">
<div class="modal-dialog">
<div class="modal-content">
</div>
</div>
</div>
<table id="tableCustom">
<div id="select-categories"></div>
<thead>
<tr>
</tr>
</thead>
<tbody>
<!--oddloop-->
<!--oddloop-->
</tbody>
</table>
</section>
</div>
您将文档嵌入到 for 循环中每一行的单个模式中。每次迭代后,嵌入模态框内的先前文档将被覆盖,因此最后一个文档是唯一可见的文档。
您应该在单击查看按钮时使用嵌入文档填充模态,而不是在加载时填充模态。这可以通过将 documento.arquivo
作为数据属性添加到相应行的模式切换按钮来完成。
我正在尝试以模式显示 pdf bootstrap。我在我的应用程序中使用 datatables,我的 table 的头部由文档标题、类别、日期和文档视图组成。在“查看文档”列的 body 中,我有一个按钮,当用户单击该按钮时,会打开一个模式,并且在其中也会打开 pdf。
我的 table 中的每一行都有一个不同的 pdf 文档,这是我的问题,我无法将引用每一行的 pdf 放入其各自的模式中。在任何行打开的 pdf 始终是我 table.
中添加的最后一个文档在那个应用程序中,我使用 firebase,pdfobject 插件来添加 pdf 和 bootstrap 用于模态。
我的代码如下:
Javascript:
<script type="text/javascript">
var documentosRef = firebase.database().ref('documentos');
function initFirebase(){
function carregaDocumentos(){
documentosRef.on('value', function(data){
headertb = isAdmin ? "<th>Título</th><th>Data de Inclusão</th><th>Categoria</th><th>Editar</th><th>Excluir</th>" : "<th>Título</th><th>Data de Inclusão</th><th>Categoria</th><th>Visualizar</th>";
$('#tableCustom thead tr').html(headertb);
$("#tableCustom").dataTable().fnDestroy();
$('#tableCustom tbody').html('');
for(var key in data.val()){
documento = data.val()[key]
if(isAdmin){
linha = "<tr>"+
"<td>"+documento.titulo+"</td>"+
"<td>"+documento.data_inicio+"</td>"+
"<td>"+documento.categoria+"</td>"+
"<td class='edit'><a href='documentos/"+key+"/edit'><i class='fa fa-edit'></i></a></td>"+
"</tr>";
$('#tableCustom tbody').append(linha);
}
else{
linha = "<tr>"+
"<td>"+documento.titulo+"</td>"+
"<td>"+documento.data_inicio+"</td>"+
"<td>"+documento.categoria+"</td>"+
"<td class='view'><a data-toggle='modal' data-target='#myModal'><i class='fa fa-eye'></i></a></td>"+
"</tr>";
$('#tableCustom tbody').append(linha);
PDFObject.embed(documento.arquivo, ".modal-content");
}
}
closeLoader();
var table = $('#tableCustom').DataTable({
"aaSorting": [[ 0, "asc" ]],
"oLanguage": {
"sUrl": "/datatable_pt.txt"
},
"aoColumnDefs": [
{ "bSortable": true, "aTargets": [ 0 ] },
{ "bSearchable": true, "aTargets": [ 0, 1, 2 ] }
]
});
$("#select-categories").each( function ( i ) {
var select = $('<select><option value=""></option></select>')
.appendTo( $(this).empty() )
.on( 'change', function () {
table.column( [2] )
.search( $(this).val() )
.draw();
} );
table.column([2]).data().unique().sort().each( function ( d, j ) {
select.append( '<option value="'+d+'">'+d+'</option>' )
} );
} );
});
}
carregaDocumentos();
}
</script>
HTML:
<div id="body">
<header>
Documentos
</header>
<section>
<div class="modal fade" id="myModal" role="dialog">
<div class="modal-dialog">
<div class="modal-content">
</div>
</div>
</div>
<table id="tableCustom">
<div id="select-categories"></div>
<thead>
<tr>
</tr>
</thead>
<tbody>
<!--oddloop-->
<!--oddloop-->
</tbody>
</table>
</section>
</div>
您将文档嵌入到 for 循环中每一行的单个模式中。每次迭代后,嵌入模态框内的先前文档将被覆盖,因此最后一个文档是唯一可见的文档。
您应该在单击查看按钮时使用嵌入文档填充模态,而不是在加载时填充模态。这可以通过将 documento.arquivo
作为数据属性添加到相应行的模式切换按钮来完成。