Из Vue - очередность обновления Async :
Если вы еще не заметили, Vue выполняет асинхронные обновления DOM. Всякий раз, когда наблюдается изменение данных, он открывает очередь и буферизирует все изменения данных, которые происходят в одном цикле событий. Если один и тот же наблюдатель запускается несколько раз, он будет помещен в очередь только один раз. Эта буферизированная дедупликация важна для предотвращения ненужных вычислений и манипуляций с DOM. Затем в следующем цикле событий «галочка» Vue сбрасывает очередь и выполняет фактическую (уже обнуленную) работу.
Vue не обновил DOM к тому моменту, когда вы
click()
, поэтому вам нужно, чтобы Vue ждал галочку. Итак, расставьтеclikc()
после следующего тика, используяVue.$nextTick()
.Итак, для вас это будет:
this.$nextTick(function(){ this.$refs.downloadCsv.click(); });
К сожалению, стандартный спиннер не позволяет отображать состояние «ничего не выбрано» после установки адаптера. Как только вы установите адаптер, первый элемент будет выбран.
Вы должны создать блесну custrom для позиции «ничего не выбрано». Смотрите здесь http://stackoverflow.com/a/12221309
Кажется, вам следует присоединиться к решению по этой ссылке со ссылкой из вашего вопроса