2016-08-12 4 views
0

Я использую SweetAlert2 и имею список выбора. Моя задача состоит в том, что значения в списке выбора добавляются программно. В то время как мой код работает, выпадающий список имеет правильное число NUMBER, текст говорит [object Object], а не то, что я добавил. Что я делаю не так? Код ниже.Javascript - Sweetalert - Добавление значений в список выбора

 var outputStr = [];  

     for (var i = 0; i < data.rows.length; i++) { 

    // If here, we have data, so show the information....  
     var vREGISTRY_ID    = data.rows[i].REGISTRY_ID    ? data.rows[i].REGISTRY_ID     : '-'; 
     var vNN_NAME     = data.rows[i].NN_NAME     ? data.rows[i].NN_NAME      : '-'; 
     var vACCOUNT_NAME    = data.rows[i].ACCOUNT_NAME    ? data.rows[i].ACCOUNT_NAME     : '-'; 
     var vSITE_DUNS_9DIG    = data.rows[i].SITE_DUNS_9DIG   ? data.rows[i].SITE_DUNS_9DIG    : '-';   
     var vPRIMARY_CITY    = data.rows[i].PRIMARY_CITY    ? data.rows[i].PRIMARY_CITY     : '-'; 
     var vPRIMARY_STATE_PROVINCE  = data.rows[i].PRIMARY_STATE_PROVINCE ? data.rows[i].PRIMARY_STATE_PROVINCE  : '-'; 

     outputStr.push({ 
      value:vREGISTRY_ID, 
      label: vACCOUNT_NAME 
     }) ; 


     }; // end of FOR loop 

     swal({ 
     title: 'Select Account Name or Division', 
     input: 'select', 
     inputOptions: outputStr , 
     inputPlaceholder: 'Select from dropdown', 
     showCancelButton: true, 
     inputValidator: function(value) { 
     return new Promise(function(resolve, reject) { 
     if (value === 'abc') { 
     resolve(); 
     } else { 
     reject('You need to select abc :)'); 
     } 
    }); 
    } 
    }).then(function(result) { 
    swal({ 
    type: 'success', 
     html: 'You selected: ' + result 
    }); 
    }) 

ответ

1

Вы должны добавить динамические свойства объекта JavaScript

Как это: data[propertyName] = propertyValue;

var inputOptions = {}; // Define like this! 
 

 
\t \t // Instead of sample variables, 
 
\t \t // your data handling here 
 

 
\t \t var vREGISTRY_ID = "500"; 
 
\t \t var vACCOUNT_NAME = "Peter"; 
 

 
    
 
     
 
     // Add the Variables like this 
 
     // This will create '500' : 'Peter', 
 
     inputOptions[vREGISTRY_ID] = vACCOUNT_NAME; 
 
     inputOptions["455"] = "Martin"; 
 
     
 
     // Note that the options will get sorted by their value 
 

 
     swal({ 
 
     title: 'Select Account Name or Division', 
 
     input: 'select', 
 
     inputOptions: inputOptions, 
 
     inputPlaceholder: 'Select from dropdown', 
 
     showCancelButton: true, 
 
     inputValidator: function(value) { 
 
      return new Promise(function(resolve, reject) { 
 
      if (value == "500") { 
 
       resolve(); 
 
      } else { 
 
       reject('You need to select Peter :)'); 
 
      } 
 
      }); 
 
     } 
 
     }).then(function(result) { 
 
     swal({ 
 
      type: 'success', 
 
      html: 'You selected: ' + result 
 
     }); 
 
     })
<link href="https://cdn.jsdelivr.net/sweetalert2/4.1.5/sweetalert2.css" rel="stylesheet"/> 
 
<script src="https://cdn.jsdelivr.net/sweetalert2/4.1.5/sweetalert2.js"></script>

+0

Это SOOOO близко к тому, что я хочу. В любом случае, чтобы добавить данные без автоматического сортировки? Я хочу, чтобы данные были в определенном порядке, как я его добавляю .... (из набора данных JSON) – user1009073

+0

Это Chrome, который заказывает объекты по свойствам .... попробуйте преобразовать число в строку ... if это не сработает, вы можете попробовать использовать «Map()», что гарантирует порядок клавиш. Для получения дополнительной информации об Chrome «Ошибка» см. Https://bugs.chromium.org/p/v8/issues/detail?id=164 –

+0

См. Здесь более подробное объяснение http://stackoverflow.com/a/38218582/5827241 –