У меня много микросервисов, которые реализуются разными базами данных (смешанными с базами данных 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'.
Я решил это, добавив атрибут 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 };
});
listItem
. Похоже, это ноль