Невозможно использовать оператор «in» для поиска «selectedItem» в null

1

У меня много микросервисов, которые реализуются разными базами данных (смешанными с базами данных SQL и без SQL). Таким образом, таблицы не имеют физических отношений между собой. Но идентификаторы хранятся в других, когда они должны быть связаны. [Пожалуйста, не спрашивайте меня, почему система структурирована таким образом] Все хорошо до этого момента. Теперь мне нужно выбрать компонент, из которого я выбираю элементы. Затем я сохраняю идентификатор выбранного элемента в моей таблице инструментов, который реализован в другой базе данных.

Но поскольку я храню идентификатор элемента, модель видит только идентификатор, поэтому он заставляет меня видеть идентификатор вместо его имени. Для этого я сделал еще один вызов для базы данных, и я назначил имя этого идентификатора в качестве модели моего выбранного компонента. И я вызываю функцию setItem() всякий раз, когда пользователь выбирает другой элемент, который выглядит следующим образом:

setItem(val){
  this.selectedItem = '${val}';
  querySearchItems(this.selectedItem); //this function simply searches the item.value and brings a list which are printed as options of the select.
}

Мой выбранный компонент:

<el-form-item class="el-col-md-5" label="Item" prop="item">
    <el-select  v-model="this.selectedItem" filterable class="sm-column-width" @change="setItem"
        remote placeholder="Please enter a keyword" :remote-method="querySearchItems"
        :loading="loading">
        <el-option v-for="item in listItem" :key="item.value" :label="item.label" :value="item.value">
        </el-option>
    </el-select>
</el-form-item>

Но всякий раз, когда пользователь меняет значение поля выбора, он дает мне ошибку "TypeError: не может использовать" в "для поиска" selectedItem "в null", что я предполагаю, потому что модель, которую я назначил выбранному, ничего не имеет для того чтобы сделать с вариантами, котор я получаю от базы данных. Поэтому мне нужно другое обходное меню, чтобы отобразить имя элемента и иметь возможность его изменить. Спасибо!

Примечание. Я также использую element-ui, поэтому теги начинаются с 'el'.

  • 0
    проверьте значение вашего listItem . Похоже, это ноль
  • 0
    это не так, я могу выбирать элементы, всякий раз, когда я нажимаю, чтобы выбрать, это дает мне эту ошибку :(
Показать ещё 2 комментария
Теги:
vue.js

1 ответ

0
Лучший ответ

Я решил это, добавив атрибут value-key для моего компонента select следующим образом:

 <el-select  v-model="selectedItem" value-key="selectedItem.value" filterable class="sm-column-width"
   remote placeholder="Please enter a keyword" :remote-method="querySearchItems"
   :loading="loading" @change="setItem">
           <el-option v-for="item in listItem" :key="item.value" :label="item.label" :value="item.value">
           </el-option>
 </el-select>

Также я изменил объявление моего выбранного элемента (по данным) следующим образом:

...
selectedItem: {label:'' , id: ''}
...

И когда я спросил, я присвоил значение следующим образом:

  this.$http.get('localhost:8080/api/'+'items/' + id)
                  .then((response) => {
                  this.selectedItem = { label: response.body.itemName, value: response.body.id };
              });

Ещё вопросы

Сообщество Overcoder
Наверх
Меню