Есть ли кнопки / вызовы функций и таблицы, обрабатываемые в MetaWidget - js
Мне интересно, могут ли некоторые помочь мне отобразить кнопки, вызовы функций и таблицы с помощью мета-виджета 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();
Выше схема содержит только свойства для отображения полей, но где указать функциональные возможности?
1 ответ
Предполагая, что проверяемый объект имеет функции, в схеме JSON вы можете указать свойство с помощью type
из function
, Metawidget отобразит их как кнопки (и подключит их обработчик кликов).
Обратите внимание, что PropertyTypeInspector
найдет функции автоматически, так что вы также можете рассмотреть возможность объединения JsonSchemaInspector
с PropertyTypeInspector
с помощью CompositeInspector
,
Часто ваш объект данных (например, var person = { firstname: 'Homer', surname: 'Simpson' }
) и объект ваших действий (например, var personActions = { save: function() {...}, delete: function() {...}}
) являются отдельными. В этих случаях вы можете позиционировать два мета-виджета как братьев и сестер (или вложенных друг в друга), каждый из которых указывает на разные объекты.
Наконец для таблиц используйте type
из array
, В схеме JSON вы вкладываете items
объект, который далее гнездится properties
объект, чтобы описать свойства элементов массива. Посмотрите этот пример http://blog.kennardconsulting.com/2016/04/metawidget-and-angular-arrays.html (это для Angular, но схема JSON такая же)