2017-01-20 8 views
1

Как связать функции в объекте методов. Я считаю, что если я использую функцию стрелки, она должна автоматически связываться с текущим объектом. Тем не менее, он имеет свой собственный scrope. Поэтому я не могу обновлять переменные данных после запроса http get.Область перспективы перспективы Vue не является обязательной для текущего компонента

Это мои клиентов Компонент.

import axios from 'axios'; 

    export default { 
    data() { 
     return { 
     customers: 'temp ', 
     loading: 'false', 
     error: null, 
     } 
    }, 
    created() { 
     console.log(this)//this is fine 
     this.getCustomerList() 
    }, 
    watch: { 
     '$route': 'getCustomerList' 
    }, 

    methods: { 
     getCustomerList:() => { 
     console.log(this) 
     axios.get('/api/customers') 
     .then((res)=>{ 
      if(res.status === 200){ 
      } 
     }) 
     } 
    } 
    } 

Это результат console.log (это) ..

result of console.log(this) Это файл мой app.js

import Vue from 'vue' 
import VueRouter from 'vue-router' 
Vue.use(VueRouter) 

import Customers from './components/Customers/Customers.vue' 

const router = new VueRouter({ 
    mode: 'history', 
    base: __dirname, 
    history: true, 
    routes: [ 
    { path: '/customers', component: Customers } 
    ] 
}) 

new Vue ({ 
    router 
}).$mount('#app') 

ответ

2

Попробуйте следующее:

methods: { 
    getCustomerList() { 
    console.log(this) 
    var that = this 
    axios.get('/api/customers') 
    .then((res)=>{ 
     if(res.status === 200){ 
      //use that here instead of this 
     } 
    }) 
    } 
} 
+0

это уже неверный масштаб, который не привязан к компоненту sc ОПЕ. – user3882878

+0

@ user3882878 сделал несколько изменений, он работает так, как в моем коде. – Saurabh

+0

hmm .. я не должен использовать функцию стрелки. Спасибо, я только что понял – user3882878