SweetAlert下拉列表动态添加列表中的项目

我目前正在使用sweetalert2从对话框中捕获用户的输入。 我想在链接队列对话框中使用下拉列表,但我似乎找不到在下拉列表中动态添加项目的方法。 假设我想从JSON格式检索数据并放在下拉列表中,有没有办法做到这一点?

function userInput() { swal.setDefaults( { showLoaderOnConfirm: true, confirmButtonText: 'Next →', showCancelButton: true, animation: true, progressSteps: ['1', '2', '3'] } ); var steps = [ { text: 'Select an author to analyze the commit', input: 'select', inputOptions: { 'SRB': 'Serbia', // How do I dynamically set value? 'UKR': 'Ukraine', 'HRV': 'Croatia' } }, { text: 'Select multiple authors to compare their commits', input: 'select', inputOptions: { 'SRB': 'Serbia', // How do I dynamically set value? 'UKR': 'Ukraine', 'HRV': 'Croatia' } }, { text: 'Select a file directory to analyze all author\'s commit', input: 'select', inputOptions: { 'SRB': 'Serbia', // How do I dynamically set value? 'UKR': 'Ukraine', 'HRV': 'Croatia' } } ]; swal.queue(steps).then(function(result) { swal.resetDefaults(); swal({ type: 'success', title: 'Success', text: 'Scroll down for statistics!', html: 'Your selections: 
' + JSON.stringify(result) + '

', confirmButtonText: 'Ok', showCancelButton: false }) }, function() { swal.resetDefaults() }) }

以JSON格式检索数据:

 function getData(repolink) { readDataFromGit('https://api.github.com/repos/' + repolink + '/git/trees/master?recursive=1', function(text){ data = JSON.parse(text); $.each(data, function(i, v) { // Retrieve v.login data! data = v.login; }) }); } function readDataFromGit(link, callback) { var request = new XMLHttpRequest(); request.overrideMimeType("application/json"); request.open('GET', link, true); request.onreadystatechange = function() { if (request.readyState === 4 && request.status == "200") { callback(request.responseText); } }; request.send(null); } 

正如SweetAlert2文档所述 , inputOptions参数可以是objectPromise

要动态填充选择项,您应该使用promises,这是一个简单的例子:

 var inputOptionsPromise = new Promise(function (resolve) { // get your data and pass it to resolve() setTimeout(function () { resolve({ '#FF0000': 'Red', '#00FF00': 'Green', '#0000FF': 'Blue' }) }, 2000) }) swal({ input: 'select', inputOptions: inputOptionsPromise })