我正在一個角度項目中工作。在控制器中,我們有一個應該生成&的按鈕,將嵌入代碼(類似於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函數的範圍內調用copy命令,因此它不會失敗,因爲copyEmbed函數綁定到單擊事件。然而,在這個例子中,我正在處理ajax調用權限,但是copyToClipboard函數沒有被點擊處理程序調用,所以複製命令失敗。任何想法,而不會導致hacky setIntervals檢查embedCode內容?