如何使用VueJS去抖动AJAX?

时间:2016-04-10 17:22:58

标签: lodash vue.js

我试图去除一个AJAX调用只发送一次,但不幸的是,它告诉我,我传递的不是一个函数。这是我的代码:

getItems: function(page){
  this.page = page;
  console.log(typeof(this.getBackendItems));
  _.debounce(this.getBackendItems(page), 500);
},
getBackendItems: function(page){
  this.$http.get("{{url('api/user/items')}}", {page : page}).success(function(response){
      this.items = response.data;
      this.last_page = response.last_page;
  });
},

Console.log说getBackendItems是一个函数,但仍然会抛出一个错误,即函数没有传递给_.debounce()调用。

1 个答案:

答案 0 :(得分:0)

这是最适合我的解决方案:

<template>
  <div>
    <input type="text" v-model="term">
  </div>
</template>

<script>
export default {
  data() {
    return {
      term: ''
    }
  },

  watch: {
    term(value) {
      this.search(value)
    }
  },

  mounted() {
    this.search = _.debounce(this.getBackendItems.bind(this), 1000)
  },

  methods: {
    getBackendItems(value) {
      console.log(value)
      // ...
    }
  }
}
</script>