我正在使用一个modal的store,并喜欢使用神奇的$watch
方法,如下所示:
Alpine.store('modal', {
init() {
this.$watch('this.open', (val) => console.log(val))
// Here I like to do if(open) { document.body.classList.add('overflow-hidden') }
},
open: false,
id: null,
close() {
this.open = false
this.id = null
}
})
字符串
但我得到TypeError: this.$watch is not a function
2条答案
按热度按时间doinxwow1#
将第二个参数 Package 在箭头函数中:
字符串
箭头函数捕获封闭上下文的
this
值,从而使您可以访问Alpine的神奇方法。lbsnaicq2#
您不能在Alpine.store中使用$watch,但仍有两个选项可用
1.使用Store的数据作为html元素的x-data,并在html本身中使用$watch来监视该数据。因此,在这里
mystore's
data将是x-data本身,因此监视它最终将监视该store的isStoreOpen
属性。字符串
1.或者出于某种原因,如果你需要在store的方法本身中使用魔法,或者有不同的
x-data
,那么你必须使用参数传递魔法。这里我在init
数据方法中使用startStoreWatch
方法,而不是init
store方法,因为store的init
方法用于初始化该store。这样,存储将监视它自己的属性,就像数据监视它自己的属性一样。
型