Мда... Начните с того, что почитаете про контекст в JS. Ну и документацию к Vue.
Вот в этой строке
let res = this.sendForm('logout')
.done(function(){
getUserInfo(); // это не функция, а метод. Почему вы так вызываете?
});
Потом вот это
let vm = this; // зачем эта дичь?
Вы же хотите юзать методы? ну так и юзайте их
Код не проверял, ибо лень. Но идея думаю ясна.
const vm = new Vue({
el: '#navbar',
data () {
return {
user: {}
}
},
methods: {
getUserInfo () {
$.ajax({
type: 'GET',
url: config.apiHost + apiRoutes.getUserInfo,
dataType: 'json'
})
.done((res) => {
if (!res.error) {
vm.user = res.data
}
})
},
loginLocal () {
this.sendForm('loginLocal')
.done(() => vm.getUserInfo())
},
logout (e) {
this.sendForm('logout')
.done(() => vm.getUserInfo())
}
}
})
- - -
P.S. Ну и мешать jQuery с Vue, тем паче для AJAX, так себе затея. Возьмите axios хотя бы.