2017-07-20 1 views
1

Svelteでは、チェックボックスのchecked属性をバインドできます。 observeは、そのコンポーネントのバインドされた値です。コールバックは、現在値と前の値を提供します。バウンドチェックボックスの変更を評価できますか?

ただし、チェックボックスの状態の変更を評価しようとすると、現在と以前の値は同じように見えます。 Please see this example to illustrate the problem。私はここで何か間違ったことをしましたか

答えて

2

いいえ、あなたは間違ったことをしていません。これはオブザーバーのしくみや、JavaScriptのオブジェクトや配列の変更可能な性質です。

オブザーバはcheckedプロパティではなくオブジェクトを監視しており、オブジェクト自体は実際には変更されていません。代わりに、item.checkedを直接観察する必要があります。

ビルトインobserveの方法では不可能ですが、あなたはsvelte-extrasobserveDeepでそれを行うことができます - here's a demo

+0

これは面白いです、ありがとうございます。これらの方法は最終的にSvelte自体に組み入れられますか? –

+0

いいえ、あなたがそれを使用しないならば、あなたはそれを支払う必要はないはずです - もし 'observeDeep'がビルトインメソッドであったならば、全てのSvelteアプリケーションは、それを使用する必要があります。これらのメソッドを別のパッケージに入れると、他の方法では正当化するのが難しい多くの機能(tweenなど)を追加することができます。 –

+0

よろしくお願いします。これらの方法を使用するコストがどのようなものか尋ねてもいいですか? –

関連する問題