Metawidget 已经提供了这样的能力。您可以使用:
var processor = mw.metawidget( "getWidgetProcessor", function( widgetProcessor ) {
return widgetProcessor instanceof metawidget.widgetprocessor.SimpleBindingProcessor;
} );
processor.save( mw.data( 'metawidget' ) );
检索 SimpleBindingProcessor(默认配置)并调用其保存方法。这会将所有 UI 元素的内容保存回mw.toInspect
. 这里有一个例子。请注意,某些 Metawidget 风格(例如 Angular Metawidget)会自动执行此操作。
如果您特别关心捕获元素的 ID,则可以扩展SimpleBindingProcessor
和覆盖其saveFromWidget
方法:
var bindingProcessor = new metawidget.widgetprocessor.SimpleBindingProcessor();
var superSaveFromWidget = bindingProcessor.saveFromWidget;
bindingProcessor.saveFromWidget = function( binding ) {
// access binding.widget.getAttribute( 'id' ) and save it somewhere
...
return superSaveFromWidget.call( this, binding );
}
processor.save
当您像以前一样调用时,这将被触发。