angularjs 通过打开的附件上的“下一步”按钮逐个显示所有附件

qlvxas9a  于 2023-10-15  发布在  Angular
关注(0)|答案(1)|浏览(130)

我有这些功能,显示我所有的附件一次,我想要的是他们被打开一个在同一时间和下一个要显示通过一个下一步按钮的附件,显示,但我不能这样做。

$scope.previsualizarTodosAdjuntos = function() {
            var ultimaPosicion = $scope.datos.adjuntos.preguntasAdjuntos.length - 1;
            var preguntasUltimaPosicion = $scope.datos.adjuntos.preguntasAdjuntos[ultimaPosicion].preguntas;
            
            var idDetalles = preguntasUltimaPosicion.map(pregunta => pregunta.idDetalle);
            
            console.log(idDetalles);
            
            idDetalles.forEach(function(idDetalle) {
                $scope.funciones.previsualizarTodosAdjunto({ idDetalle: idDetalle }); 
            });
            
        };
previsualizarTodosAdjunto: function (params, BBASE64) {
                params = {
                  SSISTEMA: "",
                  IEMPRESA: kUtil.empresa,
                  IPRESUPUESTO: $scope.datos.presupuesto.presupuesto,
                  IDETALLEPREGUNTA: params.idDetalle,
                  BBASE64: true,
                };
                $scope.servicios.servicioPrevisualizarTodosAdjunto(params);
              },
servicioPrevisualizarTodosAdjunto: function (params, ev) {
                ServicioNuevoPresupuesto.descargarAdjunto(params).then(function (ok) {

                  var nameImg = ok.data.value.Rows[0].NOMBRE;
                  var urlArchive = ok.data.value.Rows[0].DATA;
                  console.log(urlArchive)
                  var archiveBase64 = ok.data.value.Rows[0].BASE64;
                  var allowedExtensions = ["jpg", "jpeg", "png", "gif", "pdf"];
                  var lastDotIndex = nameImg.lastIndexOf('.');
                  var fileExtension = nameImg.substring(lastDotIndex + 1).toLowerCase();

                  if (allowedExtensions.includes(fileExtension)) {
                    if (fileExtension === "pdf") {
                        var byteCharacters = atob(archiveBase64);
                        var byteNumbers = new Array(byteCharacters.length);
                        for (var i = 0; i < byteCharacters.length; i++) {
                          byteNumbers[i] = byteCharacters.charCodeAt(i);
                        }
                        var byteArray = new Uint8Array(byteNumbers);
                        var pdfBlob = new Blob([byteArray], { type: "application/pdf" });
                        var pdfUrl = URL.createObjectURL(pdfBlob);

                        var confirmDialog = $mdDialog.confirm();

                        confirmDialog._options.template =
                        '<md-dialog>' +
                        '<md-dialog-content>' +
                          '<iframe src="' + pdfUrl + '" style="width: 149vh; height: 71vh;"></iframe>' +
                        '</md-dialog-content>' +
                        '<md-dialog-actions>' +
                          '<md-button ng-click="dialog.abort()" >' +
                          'Cerrar' +
                        '</md-button>' +
                        '</md-dialog-actions>' +
                      '</md-dialog>',

                      $mdDialog.show(confirmDialog)
                        
                    } else {

                        var confirmDialog = $mdDialog.confirm();

                        confirmDialog._options.template =
                        '<md-dialog>' +
                        '<md-dialog-content>' +
                          '<img src="' + urlArchive + '" alt="' + nameImg + '" style="max-width: 100%;">' +
                        '</md-dialog-content>' +
                        '<md-dialog-actions>' +
                          '<md-button ng-click="dialog.abort()" class="md-primary">' +
                            'Cerrar' +
                          '</md-button>' +
                        '</md-dialog-actions>' +
                      '</md-dialog>',
              
                      $mdDialog.show(confirmDialog)
                    
                    }
                  } 
                  
                });
              },

我试过承诺,但它对我不起作用。
我也试过用控制变量,

42fyovps

42fyovps1#

你必须添加一个索引变量

$scope.currentAttachmentIndex = 0;

现在只显示索引附件

$scope.previsualizarTodosAdjuntos = function() {
    var idDetalles = $scope.datos.adjuntos.preguntasAdjuntos[$scope.currentAttachmentIndex].preguntas.map(pregunta => pregunta.idDetalle);
    $scope.funciones.previsualizarTodosAdjunto({ idDetalle: idDetalles[0] }); 
};

更新您的对话框模板以包含“下一步”按钮:

'<md-dialog-actions>' +
  '<md-button ng-click="dialog.next()" >' +
  'Next' +
  '</md-button>' +
  '<md-button ng-click="dialog.abort()" >' +
  'Cerrar' +
  '</md-button>' +
'</md-dialog-actions>'

处理下一步按钮

$mdDialog.show(confirmDialog).then(function(result) {
    if (result === 'next') {
        $scope.currentAttachmentIndex++;
        if ($scope.currentAttachmentIndex < $scope.datos.adjuntos.preguntasAdjuntos.length) {
            $scope.previsualizarTodosAdjuntos();
        } else {
            $scope.currentAttachmentIndex = 0; // Reset or handle end of list
        }
    }
});

相关问题