Vuejs наблюдает за объектом, а затем выполняет метод не удается - PullRequest
2 голосов
/ 16 марта 2019

Я хочу посмотреть опору, которая является объектом, поэтому у меня есть

<script>
export default {
    watch:{
        filter: {
            handler:(newval)=> {
               console.log("i have new data",newval) //this works
               this.fetchData(); //throws an error
            },
            deep: true
        }
    },
    props:{
        filter:{
            type:Object,
            required:true
        }
    },
    data: () => ({
        pagination: {},
        items: []
    }),
    methods:{
        fetchData(){
            console.log("am fetching the data");
        }
    }
}

Приведенный выше наблюдатель работает, когда console.log отображает новое значение, но я не могу выполнить метод, так как на часах появляется сообщение об ошибке Ошибка в обратном вызове для «фильтра» наблюдателя: «Ошибка типа: _this.fetchData не является функцией» , Как я могу выполнить метод на глубоком наблюдателе.

1 Ответ

2 голосов
/ 16 марта 2019

Переместить функцию стрелки в простую функцию для handler method. Измените handler:(newval)=> { на handler: function (newval) {:

Vue.js документы:

Не используйте функции стрелок в свойстве опций или обратном вызове, таких как созданный: () => console.log (this.a) или vm. $ Watch ('a', newValue => this.myMethod () ).

handler: function (newval) {
  console.log("i have new data",newval) //this works
  this.fetchData(); // it should work
},
...