Tengo un botón de descarga configurado en una página web a la que se le asigna una identificación de forma iterativa según la cantidad de preguntas que se publican.
Aquí está el botón:
<input data-bind="attr: { id: $index() }" type="button" value="Download" class="download" />Aquí está la función JS que encuentra el número asignado y hace clic:
@Scripts.Render("~/bundles/knockout") <script type="text/javascript"> var SDNo = 0; $(document).ready(function () { SystemJS.import('sd/questions').then(function (modules) { //Code here for another section that fills out the questions not relevant apart from assigning SDNo }); SystemJS.import('sd/download').then(function (modules2) { var attachVM = new modules2.Attachment(); //$("#download").click(function () { $("input[class^='download'], input[class*=' download']").each(function () { $(this).click(function () { var id = $(this).attr('id'); let passedValue = id.concat("-" + SDNo); attachVM.download(passedValue); }); }); });La función anterior me permite ir a un archivo mecanografiado y manejar la llamada API requerida para OBTENER un archivo
ese codigo esta aqui:
mecanografiado
export class Attachment { async download(ID: Number) { window.open(await WebApi.getJSON('SD', 'Download', Number)); } }Entonces, sí, funcionará, luego dejará de funcionar aleatoriamente sin ninguna razón que pueda encontrar y, obviamente, no se arrojarán errores, a través de la depuración ni siquiera ingresa al archivo mecanografiado, no pasa nada. Pero a veces llega hasta el controlador haciendo lo que tiene que hacer.
Según @LouysPatriceBessette
$("input[class^='download'], input[class*=' download']").each(function () { $(this).click(function () { var id = $(this).attr('id'); let passedValue = id.concat("-" + SDNo); attachVM.download(passedValue); });a
$("input.download").on("click", function() { var id = $(this).attr('id'); let passedValue = id.concat("-" + SDNo); attachVM.download(passedValue); });Y funciona consistentemente ahora, gracias de nuevo.