Mir ist gerade aufgefallen, dass das widget-synced
zweimal ausgetriggers wird, wenn Sie versuchen, ein Widget zu bearbeiten, klicken Sie auf ein Textfeld, schreiben Sie etwas, triggers widget-synced
einmal, und wenn Sie irgendwo anders klicken, triggers es ein zweites Mal aus.
Ist dieses Standardverhalten und kann es in einem benutzerdefinierten Widget verhindert werden?
Vielen Dank!
Pingen @WestonRuter
Der Grund hierfür ist, dass das Widget seine Aktualisierungslogik sowohl auf der keydown
als auch bei der change
für ein bestimmtes input
keydown
. Siehe https://github.com/WordPress/wordpress-develop/blob/4.7.2/src/wp-admin/js/customize-widgets.js#L891-L907
Es gibt einige Kompromisse, wenn Widgets zum Customizer hinzugefügt wurden, um diese PHP-gesteuerten Interfaces in einen JS-gesteuerten Kontext zu bringen. Es war nicht perfekt und deshalb ist dies ein Grund für das Feature-Plugin von JS Widgets , um zu modernisieren, wie benutzerdefinierte Widgets im Customizer implementiert werden.
Wenn Sie wirklich nur darauf warten möchten, wenn ein Widget tatsächlich seinen Status ändert, können Sie stattdessen die zugrunde liegende setting
des Steuerelements abhören. Die Einstellung wird nur einmal nach einem bestimmten keydown
und nachfolgenden change
aktualisiert.
Ich habe es irgendwie geschafft, es zu beheben, weiß nicht, ob es der richtige Weg ist, dies ist im Falle von sortierbaren Feldern, mit dem Stop-Ereignis und überprüfen, ob die Schaltfläche “Anwenden” im Widget ist: https://jsfiddle.net/ 6h5t5r6y