vuejs поддержание состояния в v-for с el-select из пользовательского интерфейса Element - PullRequest
1 голос
/ 27 июня 2019

Хорошо, у меня есть форма с массивом строковых локалей ('it', 'en' и т. Д.), Поэтому я сделал простой v-for для отображения удаленного поиска el-select из ElementUI .

(Для тех, кто не знает, el-select с удаленным поиском, это своего рода выбор, который сделал вызов API, чтобы получить значения с сервера, чтобы заполнить список параметров, пока пользователь пишет, поэтому он начинается с пустогосписок опций и каждый раз заполняется на основе ввода пользователя тем, что возвращает сервер.)

Изначально мой массив был просто [null], поэтому в форме отображается пустой el-select, но спросто добавьте кнопку, я могу array.push(null), чтобы развернуть ее.

Код рендеринга списка имеет вид

<div v-for="(locale, index) in locales"
  :key="index">

  /*...*/

</div>

, поэтому я использую свой индекс массива для поддержания состояния.

Пока все хорошо: при выборе данных из el-select и при нажатии код работает нормально.

Проблема возникает, когда я удаляю один из элементов массива, но последний с array.splice(index,1):правильный элемент массива удален, но он как vue только что удаленпоследний из el-select, но не тот, который относится к правильному элементу массива, поэтому теперь каждый выбор из индекса удаленного элемента массива до последнего имеет значение, не соответствующее его параметрам.

например:мой массив ['it','fr','es','ko'], поэтому мои входные данные отображают «итальянский», «французский», «испанский», «корейский»;но при удалении array[1] -> 'fr' я получил мои выборки, отображающие 'Italian', 'es', 'ko'.

Просто, чтобы быть понятным, мой массив содержит String элемент, а не Object s, поэтому пример из документов не применяется, поскольку он использует объект.

Как мне сохранить состояние при удалении элемента массива?

...