如何解决通过 vuex 中的`dispatch` 发送事件对象?
如果 class Invoice(models.Model):
date = models.DateField(default=timezone.now)
client = models.ForeignKey('Client',on_delete=models.PROTECT)
def total(self):
total = self.invoiceitem_set.aggregate(sum=Sum('subtotal'))
return round(total[("sum")] or 0,2)
class InvoiceItem(models.Model):
invoice = models.ForeignKey('Invoice',on_delete=models.CASCADE)
product = models.ForeignKey(Product,on_delete=models.PROTECT)
price = models.DecimalField(max_digits=20,decimal_places=2)
quantity = models.DecimalField(max_digits=20,decimal_places=2)
def subtotal(self):
return self.price * self.quantity
回调被传递,例如,通过箭头函数,那么一切正常,但是我无法通过 addEventListener
删除侦听器。
removeEventListener
解决方法
问题是您在每次调用 addEventListener
和 removeEventListener
时都创建了一个新的匿名函数,因此 removeEventListener
无法找到最初创建的回调。
缓存传递给 addEventListener
的已创建回调而不是内联匿名函数,以便稍后将缓存的结果传递给 removeEventListener
:
let clickHandler = null
export const actions = {
open() {
// remove any existing callback (null ignored)
document.removeEventListener('click',clickHandler)
clickHandler = (e) => this.dispatch('clickListener',e)
document.addEventListener(j'click',clickHandler)
},close() {
document.removeEventListener('click',clickHandler)
clickHandler = null
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。