VueJS Resource выдает неопределенную ошибку в точном коде другого проекта - PullRequest
0 голосов
/ 23 февраля 2019

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

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

VueJS error message

Мой кодкак следует (все отлично работает, кроме ресурса): 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>

1 Ответ

0 голосов
/ 23 февраля 2019

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

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

...