1. <template>
    2. <div>
    3. <el-form :model="dataForm">
    4. <el-input size="mini" v-model="dataForm.budgetprojectname"></el-input>
    5. </el-form>
    6. </div>
    7. </template>
    8. <script>
    9. export default {
    10. data () {
    11. return {
    12. dataForm: {},
    13. timeID:null, // 定时器
    14. },
    15. watch: {
    16. dataForm:{
    17. handler(val, oldVal){
    18. this.autoSave()
    19. },
    20. deep:true //true 深度监听
    21. }
    22. },
    23. methods: {
    24. /**
    25. * 为防止监听时 多次发送请求 使用防抖/节流
    26. * 防抖: 将多次执行变为最后一次执行
    27. * 节流: 将多次执行变为每隔一段时间执行
    28. */
    29. autoSave(val, oldVal){
    30. if(this.timeID){
    31. clearTimeout(this.timeID) // 清除定时器
    32. }
    33. this.timeID=setTimeout(()=>{ // 定时器
    34. console.log('防抖');
    35. this.RealTime()
    36. },30000) // 操作结束后30秒 发送axios请求
    37. },
    38. // 自动保存
    39. RealTime(){
    40. // 发送axios请求
    41. }
    42. }
    43. }
    44. </script>