vue.js 中的无限循环警告

Infinite loop warning in vue.js

这个 vue 指令:

Vue.directive 'datepicker',
  bind: () ->
    vm = this.vm
    key = this.expression
    datepicker = $(this.el).datepicker
      todayBtn: 'linked'
      language: 'de'
      daysOfWeekDisabled: '0'
      calendarWeeks: true
      todayHighlight: true
      toggleActive: true
      autoclose: true
    datepicker.on 'changeDate', (e) ->
      vm.$set key, e.date
  update: (val) ->
    $(this.el).datepicker 'setDate', val

在控制台中给我这个警告:

You may have an infinite update loop for watcher with expression: date

为线

vm.$set key, e.date

如何摆脱警告/无限循环?

您可以在 changeDate 处理程序上添加一个守卫,仅当日期与已存储的日期确实不同时才更新 vm。请注意,身份检查可能还不够,因为 $datepicker(取决于其内部实现)可以使用日期副本发送 changeDate 事件。