2016-12-03 2 views
1

Я пытаюсь сделать некоторые действия на кнопки пользователь мыши:.Clipboardjs не работает внутри jQuery.get() сделано()

  1. Получить некоторые данные с сервера с помощью JQuery AJAX вызова.
  2. При успешном использовании, сохраните эти данные us button attributes data-clipboard-text значение.
  3. Скопируйте это значение в буфер обмена с помощью clipboardjs.

Проблема: шаг 3 отлично работает вне jQuery.get().done() с использованием фиктивного текста, но не внутри done(). Это не то, что я ожидаю, потому что clipboardjs запускает копию, пока нет целевого значения.

(function ($) { 
var root = {}; 
root = { 
    get_client_addresses_from_server: function (btn) { 

     var url = btn.attr('data-src'); 
     $.get(url, function (data) { 
      } 
     ).done(function (data) { 
      btn.attr('data-clipboard-text', data.text); 

      // here clipboardjs is unable to copy 
      var clipboard = new Clipboard('.btn', { 
       text: function (trigger) { 
        return trigger.getAttribute('data-clipboard-text'); 
       } 
      }); 

      clipboard.on('success', function (e) { 
       console.info('Action:', e.action); 
       console.info('Text:', e.text); 
       console.info('Trigger:', e.trigger); 

       e.clearSelection(); 
      }); 

      clipboard.on('error', function (e) { 
       console.error('Action:', e.action); 
       console.error('Trigger:', e.trigger); 
      }); 


     }); 


    }, 
}; 

$('#client-action-form .form-actions button[value="copy_addresses"]').click(function (event) { 
    event.preventDefault(); 
    root.get_client_addresses_from_server($(this)); 
}); 
})(jQuery); 

ответ

0

Найдено решение сам: http://jsfiddle.net/zenorocha/n5pLh1rk/2/

$.ajax({ 
    url: "https://api.github.com/repos/zenorocha/clipboard.js/readme", 
    dataType: "jsonp" 
}) 
.done(function(result) { 
    copy(result.data.content); 
}); 

function copy(someText) { 
    var clipboard = new Clipboard('.btn', { 
     text: function() { 
      return someText; 
     } 
    }); 

    clipboard.on('success', function(e) { 
     console.log(e); 
    }); 

    clipboard.on('error', function(e) { 
     console.log(e); 
    }); 
} 
Смежные вопросы