在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称:vjform开源软件地址:https://gitee.com/fyl080801/vjform开源软件介绍:Vue JSON form
使用任何 Vue 组件或 html 元素构建视图 开发 vue 项目时,可能会遇到以下需求场景
普通 JSON 数据虽然可以描述对象的属性与结构,但是对象方法的定义、程序逻辑的实现以及对象属性与数据的关联关系在序列化成 JSON 数据后无法保存,即使将这些定义可以单独序列化成二进制或 base64 格式的数据,但是如果需要开发编辑器编辑配置时,序列化后的数据对象也不好操作。 使用 Vue JSON form 组件可以解决 JSON 格式的这些弊端,组件支持用特定 JSON 对象表示属性值和方法,最终在运行时解析属性转换成真正的值或方法。 现已推出支持 vue3.0 版本 Getting Start克隆项目,执行 npm install 之后 npm start 特性
特色功能说明转换支持将固定参数 支持绑定值、计算属性、数组、事件定义,将以上数据关联到对象属性上 数据源数据支持远程数据获取、刷新和进行表单提交行为(最新版已经支持对象数据源的数据使用转换结果) 通过监听(watchs)实现数据变化时更新关联数据,实现联动 名词解释
文档待更新... 指南通过 npm 安装npm i vjform 项目中引用import Vue from 'vue'import vjform from 'vjform'Vue.component('vjform', vjform) 基础示例呈现一个简单的表单 template <template> <vjform v-model="model" :fields="fields"></vjform></template> script export default { data() { return { // 数据 model model: {}, // Vue 组件或 html 元素组成的数组 fields: [ { component: "input", // 通过定义 model,显示并响应输入的结果 model: ["firstName"], // 参考 Vue 关于 render 的 API [Vue's render functions](https://vuejs.org/v2/guide/render-function.html#The-Data-Object-In-Depth) fieldOptions: { class: ["form-control"] attrs: { placeholder: "输入文本" } } } ] }; }}; 转换示例通过 支持 <template> <vjform v-model="model" :fields="fields"></vjform></template> script export default { data() { return { // 数据 model model: {}, // Vue 组件或 html 元素组成的数组 fields: [ { component: "input", model: ["firstName"], // 参考 Vue 关于 render 的 API [Vue's render functions](https://vuejs.org/v2/guide/render-function.html#The-Data-Object-In-Depth) fieldOptions: { class: ["form-control"] attrs: { placeholder: "输入文本" } } }, { component: 'p', fieldOptions: { domProps: { // 定义一个转换, 显示 model 的 firstName 属性 innerText: { $type: 'bind', $source: 'model.firstName' } } } }, { component: 'p', // 支持特定属性的简易定义,这里同定义 innerText 效果一样 text: { $type: 'bind', $source: 'model.firstName' } } ] }; }}; 版本 2.0.0 重大更新变更扩展功能的注入方式使用 import vjform from 'vjform'import * as bind from './transform/bind'import fieldOptions from './provider/fieldOptions'import requestSource from './datasource/request'import addition from './functional/addition'vjform.use( ({ datasource, // 数据源 transform, // 转换 provider, // 渲染处理 functional // 功能函数 }) => { transform(bind.getter, bind.deal) provider(fieldOptions) datasource('request', requestSource) functional('addition', addition) }) 可在使用时单独注入扩展功能组件增加 <template> <v-jform :fields="fields" v-model="model" :params="params" :datasource="datasource" :components="components" :listeners="listeners" :initialling="onInitialling" ></v-jform></template><script> export default { data() { return { fields: [], listeners: [], model: {}, params: {}, datasource: {}, components: {} } }, methods: { onInitialling({ datasource, // 数据源 transform, // 转换 provider, // 渲染处理 functional // 功能函数 }) { // 同全局 use } } }</script> 在转换中使用的对象支持使用另一个组件的实例内置的网络请求数据源改用 fetch 实现可视化设计器vjdesign 是 vjform 的可视化设计器 也可访问 gitee 项目 依赖Lodash使用了 mitt从转换或渲染处理中想要改变 Vue基于 |
请发表评论