的JavaScript。两个按钮与不同的网址。但是最后一个按钮会覆盖旧按钮

时间:2016-04-20 12:48:49

标签: javascript django

我的代码有一个按钮,可以将文件打印到pdf格式(它工作正常)。现在我想添加另一个按钮,只需在html页面中打印它。我添加了新按钮,它也有效。

问题是,现在当我创建一个新按钮时,它现在将覆盖旧按钮上的方法。所以这两个按钮都会做同样的事情。 (两者都以html格式打印)

以下是我的代码的一部分:

发票数据表的功能如下所示:

function invoiceDatatable(tableId, extras, url, optionParser) {
  var options = $.extend(true, {}, documentOptions, {
    tableId: tableId,
    url: url || '/api/invoices/?type=i',
    extras: extras
  });

在这里,我用它们的url创建了两个按钮 - 代码总是使用最后创建的按钮:

options.tasks.push({
    url: '/print_to_pdf',
    queryParam: 'documents',
    label: '<i class="fa fa-print"></i> Print pdf'
  });

  options.tasks.push({
    url: '/print_to_html',
    queryParam: 'documents',
    label: '<i class="fa fa-print"></i> Print html'
  });

最后,按钮任务的代码如下所示:

for (var i = 0; i < self.tasks.length; i++) {
    var task = self.tasks[i];
    var taskButton = $('<button type="button">' + (task.label || task) + '</button>');
    taskButton.addClass('btn btn-default');
    $(taskButtons).append(taskButton);
    if (task.action) {
      // An entry point for custom actions
      $(taskButton).click(function(){
        task.action(self.selected);
      })
    } else {
      $(taskButton).click(function () {
        var downloadUrl = task.url + '?' + task.queryParam + '=' + self.selected.join(',');
        downloadUrl += "&ordering=" + self.ordering()['ordering'];
        $(infoPanel + ' .alert').remove();
        $(infoPanel).append('<div class="alert alert-info">' +
          '<i class="fa fa-circle-o-notch fa-spin"></i> Building document' +
          '</div>');
        $.ajax(downloadUrl, {
          success: function (data) {
            function doPoll(url, success) {
              $.ajax(jobUrl, {
                type: "HEAD",
                success: function (pdfData, status, xhr) {
                  if (xhr.status == 202) {
                    setTimeout(function () {
                      doPoll(url, success)
                    }, 2000);
                  } else {
                    success()
                  }
                }
              });
              $.ajax(url, function (data) {
                alert(data);  // process results here
                setTimeout(doPoll, 5000);
              });
            }

如何修复代码以使每个按钮都有自己的功能?

修改

我认为是覆盖动作的推送方法。你们觉得怎么样?

0 个答案:

没有答案