可以评估绑定复选框的更改吗?
Can changes be evaluated for bound checkboxes?
在 Svelte 中,您可以绑定复选框的 checked
属性。然后,您可以 observe
组件上的绑定值,其回调提供当前值和先前值。
但是,当我尝试评估复选框状态的变化时,当前值和先前值似乎相同。 Please see this example to illustrate the problem。我是不是哪里做错了?
不,你没有做错什么——这是观察者工作方式的一个怪癖,以及 JavaScript 中对象和数组的可变性质。
观察者正在观察 对象 而不是 checked
属性,对象本身实际上并没有改变。相反,您需要直接观察 item.checked
。
内置的 observe
方法无法做到这一点,但您可以使用 svelte-extras — here's a demo 中的 observeDeep
方法做到这一点。
在 Svelte 中,您可以绑定复选框的 checked
属性。然后,您可以 observe
组件上的绑定值,其回调提供当前值和先前值。
但是,当我尝试评估复选框状态的变化时,当前值和先前值似乎相同。 Please see this example to illustrate the problem。我是不是哪里做错了?
不,你没有做错什么——这是观察者工作方式的一个怪癖,以及 JavaScript 中对象和数组的可变性质。
观察者正在观察 对象 而不是 checked
属性,对象本身实际上并没有改变。相反,您需要直接观察 item.checked
。
内置的 observe
方法无法做到这一点,但您可以使用 svelte-extras — here's a demo 中的 observeDeep
方法做到这一点。