ich separate Klasse für axios Anfragen machen wollen, die wie "Service" arbeitetKlasse Import in Vue Komponente
Vue Komponente:
<template>
<div v-for="user in users">
{{ user.firstname }} - {{ user.lastname }} - {{ user.middlename }}
</div>
</template>
<script>
import ConnectionService from './ConnectionService';
const connectionService = new ConnectionService();
export default {
mounted() {
console.log('Component is mounted');
},
created() {
this.users = connectionService.getSingleInstance('http://laravelapi/user');
console.log("This are users " + this.users);
},
data() {
return {
users: [],
}
}
}
</script>
und der Service ist folgende:
export default class ConnectionService {
getSingleInstance(path) {
console.log('This is path ' + path);
let axios_data = {};
axios.get(path).then(response => axios_data = response.data.result);
console.log('This is data ' + axios_data);
console.log(axios_data);
return axios_data;
}
}
Wie ich in meiner Konsole sehen kann, bekomme ich die Daten von axios xhr Anfrage, aber dann werden sie nicht an die Vue-Komponente übergeben, weil ich leere Objekt in der Zeichenfolge console.log ("Das sind Benutzer" + dies). Benutzer);
Wie COnnectionService richtig importieren und dann in Vue-Komponente verwenden?
Versucht, dies zu tun, aber den folgenden Fehler erhalten: app.js: 34877 [Vue warnen]: Fehler in erstellten Hook: "TypeError: connectionService.getSingleInstance (...). Dann ist keine Funktion" – ILya
@ILya Ich habe meine Antwort bearbeitet (ich weiß nicht, ob es funktioniert), aber auf jeden Fall denke ich, dass es ein Problem aufgrund der asynchronen Funktion ist, und Sie können nach Informationen suchen, um es zu lösen. – ricopo