Wpis z mikrobloga

@yeruvoci: Programuję sobie w #vue #programowanie i nie działa mi zmienna test która nie chce odczytać z axiosa danych
Jak sobie z tym problemem poradzić?

var newtransfer = Vue.component('newtransfer', {
data: function () {
return {
test: " - ",
}
},
methods: {
send_transfer(transfer) {
axios.post("script.php?action=new_transfer", formData).then(
function (respose){
this.test = respose.data.test
}
);
}
},
  • 5
  • Odpowiedz
@yeruvoci: wrzuć działający przykład na jsfiddle albo coś podobnego (i będzie to chociaż czytelne). Nie napisałeś też co dokładnie Ci nie działa, bo równie dobrze ten POST może nic nie zwracać i dlatego nic się nie przypisuje do this.test
  • Odpowiedz
" this.test = respose.data.test ", na co wskazuje ten this ?. Spróbuj użyć funkcji strzałkowych w then()
Edit: Kolega wyżej mnie uprzedził, ale i tak wydaje mi się, że lepiej niż bind czy trikiem z let_this, po prostu użyć funkcji strzałkowej.
  • Odpowiedz
@yeruvoci: Użyj arrow function, bo this w tym response nie znaczy już twojeog komponentu. Pisz:
.then(response => { this.test = response.data.test }). Albo używaj składni async/await, wygodniejsza w większości przypadków.
  • Odpowiedz