1

我想知道是否有人可以帮助我获取使用 metawidget jsonSchema 显示的按钮、函数调用和表。
不幸的是,我可以将它视为我们应用程序的表单渲染器,它是我们需要在外部定义的吗?如果我们能以某种方式从一种形式导航到另一种形式

<script type="text/javascript">
            var mw = new metawidget.Metawidget( document.getElementById( 'metawidget' ), {

                inspector: new metawidget.inspector.CompositeInspector( [ new metawidget.inspector.PropertyTypeInspector(),
                    function( toInspect, type, names ) {

                        return {
                            properties:
                                name: {
                                    required: true
                                },
                                notes: {
                                    type: "string",
                                    large: true
                                },
                                employer: {
                                    type: "string",
                                    section: "Work"
                                },
                                department: {
                                    type: "string"
                                }
                            }
                        };
                    } ] ),

                layout: new metawidget.jqueryui.layout.TabLayoutDecorator(
                    new metawidget.layout.TableLayout( { numberOfColumns: 2 } ))
            } );        
            mw.toInspect = person;
            mw.buildWidgets();

上面的模式只包含渲染字段的属性,但是在哪里指定功能呢?

4

1 回答 1

1

假设您正在检查的对象具有功能,在 JSON 模式中,您可以使用typeof指定属性function。Metawidget 会将它们呈现为按钮(并将连接它们的点击处理程序)。

请注意,它PropertyTypeInspector会自动查找函数,因此您也可以考虑将您的JsonSchemaInspectorPropertyTypeInspectorusing结合使用CompositeInspector

通常您的数据对象(例如var person = { firstname: 'Homer', surname: 'Simpson' })和您的操作对象(例如var personActions = { save: function() {...}, delete: function() {...}})是分开的。在这些情况下,您可以将两个 Metawidget 定位为兄弟(或相互嵌套),每个指向不同的对象。

最后对于表使用 a typeof array。在 JSON 模式中,您嵌套了一个items对象,该对象进一步嵌套了一个properties对象,以描述数组项的属性。请参阅此示例http://blog.kennardconsulting.com/2016/04/metawidget-and-angular-arrays.html(它适用于 Angular,但 JSON 模式是相同的)

于 2017-01-18T08:29:48.973 回答