web-dev-qa-db-ja.com

カスタマイザ:ウィジェット同期のトリガが2回

ウィジェットを編集し、テキストフィールドをクリックして何かを書いて一度widget-syncedをトリガーしようとすると、widget-syncedが2回トリガーされ、それ以外の場所をクリックすると2回トリガーされることに気付きました。

enter image description here

これはデフォルトの動作ですか?カスタムウィジェットでは防止できますか?

ありがとうございます。

Pinging @WestonRuter

1
superwinner

これは、ウィジェットがkeydownandで更新ロジックを実行し、特定のchange要素のinputでも実行するためです。 https://github.com/WordPress/wordpress-develop/blob/4.7.2/src/wp-admin/js/customize-widgets.js#L891-L907 を参照してください

これらのPHP駆動型インターフェースをJS駆動型コンテキストに取り込むために、ウィジェットがカスタマイザーに追加されたときに、いくつかのトレードオフがあります。完璧ではなかったため、これが JS Widgets 機能プラグインの背後にある理由の一部であり、カスタマイザーでカスタムウィジェットがどのように実装されるかを近代化します。

ウィジェットが実際にその状態を変更したときに本当にリッスンしたい場合は、代わりにコントロールの基になるsetting changeをリッスンできます。設定は、指定されたkeydownおよび後続のchangeイベントの後に一度だけ更新されます。

2
Weston Ruter

私はちょっとそれを修正することができた、それが正しい方法であるかどうかわからない、これはstopイベントを使って、そして「適用」ボタンがウィジェットの中にあるかどうかチェックするソート可能なフィールドの場合である: https://jsfiddle.net/6h5t5r6y

0
superwinner