私は角度のあるプロジェクトで作業しています。コントローラには、&の埋め込みコード(YouTubeに似ています)をクリップボードにコピーするボタンがあります。ただし、項目のタイプによっては、埋め込みコードはajax呼び出しでのみ生成/返すことができます。このコードを見て:クリップボードにデータをコピーできません。vanilla js/angular
function copyEmbed(e) {
var embedCode = '';
if (type === "typeA"){
api.items.compile.get({'id': item.selected.id},
function (response) {
embedCode = response.html; //<-- takes time to populate obviously
copyToClipboard();
});
} else {
embedCode = generateEmbedCodeTemplate(); //no ajax here. populates immediately
copyToClipboard();
}
function copyToClipboard() {
clipboard.copyText(); // all seems good but copying will fail as this function is not invoked with a click handler!
}
}
問題AJAX呼び出しのため、コードは、copyEmbed関数のスコープにすることはできません結果の埋め込みコードをコピーするので、これはAJAX呼び出しが持っていないことを意味していることですコピーする前にデータを取得する時間。私はすべてを同期することができた場合、私はデータを取得し、copyEmbed関数の範囲内からコピーコマンドを呼び出すことができるので、copyEmbed関数がクリックイベントにバインドされているので、失敗しません。しかし、この例では、私はajax呼び出しの権利を処理していますが、copyToClipboard関数はクリックハンドラで呼び出されないため、copyコマンドは失敗します。どんなアイデアでも、embedCodeの内容をチェックするためにハッキングされたsetIntervalsが発生することはありませんか?