Ресурс VueJS выдает неопределенную ошибку в точном коде, как и в другом проекте

Я изучаю VueJS, и мне это нравится! но за последние 2 дня я застрял на странной проблеме. Я сделал предыдущий проект, и там точно такой же код работает. В моем новом проекте (учебном проекте) идентичный код НЕ работает.

Это приводит к этой ошибке:

Сообщение об ошибке VueJS

Мой код выглядит следующим образом (все работает отлично, кроме ресурса): Main.js

import Vue from 'vue'
import App from './App.vue'
import VueResource from 'vue-resource'
import router from './router'

Vue.config.productionTip = false
Vue.use(VueResource);

Vue.http.options.root = 'https://myapi.com/v1/list/';
Vue.http.interceptors.push((resource, next) => {
    this.method = 'GET';
    next();
});

new Vue({
    el: '#app',
    router,
    render: h => h(App)
});

Код Home.vue:

<template>
    <div>
        <StatsRowOne></StatsRowOne>
        <button class="btn btn-primary" v-on:click="submit">search</button>
    </div>
</template>

<script>
    import StatsRowOne from './elements/StatsRowOne';

    export default {
        data(){
            return {
                results: [],
                resource: {}
            }
        },
        components: {
            StatsRowOne: StatsRowOne
        },
        methods: {
            submit() {

                this.resource.get().then(function(response) {
                    alert('done');
                });

            }
        },
        created() {
            this.resource = this.$resource('auto');
        }
    }
</script>

<style lang="scss" scoped>

</style>

person Community    schedule 23.02.2019    source источник
comment
Вы уверены, что правильно копируете код? Это потому, что вы используете синтаксис стрелочной функции ES6, что означает, что this.method в строке 7 в main.js на самом деле не указывает на настройку method перехватчика.   -  person Terry    schedule 23.02.2019
comment
Ах, подождите .. вы так правы! дай мне проверить...   -  person    schedule 23.02.2019
comment
Похоже, вы были правы... Я скопировал этот код (один из немногих фрагментов, которые я не взял из другого моего проекта) с официальной страницы Vue, лол... Большое вам спасибо, теперь я знаю, что искать в будущем !   -  person    schedule 23.02.2019


Ответы (1)


Еще одно объяснение из моего комментария: this.method не определено в строке 7 в вашем файле main.js, потому что оно используется в функции стрелки. Помните, что стрелочные функции в ES6 сохраняют лексическое this, поэтому на самом деле вы неправильно обращаетесь к свойству, потому что this не указывает ни на что, выставленное перехватчиком в обратном вызове.

Согласно документации, кажется, что вместо этого вы должны использовать resource.method.

person Terry    schedule 23.02.2019