Здесь проблемы ...
- Вы включаете Vue дважды (
https://cdn.jsdelivr.net/npm/vue/dist/vue.min.js
и https://unpkg.com/vue/dist/vue.js
). Не делайте этого - Вы не можете использовать директиву
v-for
в своем root Vue элементе - Ваша форма находится за пределами вашего Vue root, поэтому вы не будете иметь возможность использовать
v-on
- Кнопка отправки отправит форму как обычно. Ничто не мешает этому случиться.
- Ваше значение
input
никогда не используется. Вы должны попробовать привязать его к свойству данных
Измените HTML на
<div id="results">
<form action="http://127.0.0.1:1880/" @submit.prevent="getOverview">
<label for="request">
<strong>Please insert the input here:</strong>
</label>
<br>
<input type="text" id="request" name="input" v-model="input">
<br>
<button type="submit">Submit</button>
</form>
<h1 v-for="item in overview">
{{ item }}
</h1>
</div>
, а в JS замените data
на
data: () => ({
overview: [],
input: ''
})
Затем вы можете использовать this.input
, если вам когда-нибудь понадобится получить значение, которое вводит пользователь.
Вот пример использования API-заполнителя
new Vue({
el: "#results",
data: () => ({
overview: [],
input: ''
}),
methods: {
async getOverview ($event) {
let url = 'https://jsonplaceholder.typicode.com/users'
if (this.input) {
url += `/${encodeURIComponent(this.input)}`
}
try {
const { data: sub_regions } = await axios.get(url)
console.log('results data', sub_regions);
this.overview = Array.isArray(sub_regions) ? sub_regions : [ sub_regions ]
} catch (error) {
console.log(error);
this.overview = []
}
}
},
created() {
this.getOverview()
}
})
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
<div id="results">
<form action="http://127.0.0.1:1880/" @submit.prevent="getOverview">
<label for="request">
<strong>Please insert the user ID here:</strong>
</label>
<br>
<input type="number" id="request" name="input" v-model.number="input">
<br>
<button type="submit">Submit</button>
</form>
<h1 v-for="item in overview">
{{ item.name }}
</h1>
</div>
Другие примечания: