ncform初试

作者: hugoren | 来源:发表于2018-07-25 14:47 被阅读0次

ncform是什么

ncform是vipshop开源的js动态表单,使用了element前端风格

ncform的html用法

<html>

<head>
    <meta charset="UTF-8">
    <!--<link rel="stylesheet" href="https://unpkg.com/element-ui@2.4.3/lib/theme-chalk/index.css">-->
    <link rel="stylesheet" href="css/ncform_index.cssA">
</head>

<body>
<div id="demo">
    <ncform :form-schema="formSchema" form-name="form-1" v-model="formSchema.value" @submit="submit()"></ncform>
    <el-button @click="submit()">Submit</el-button>
</div>

<!--<script type="text/javascript" src="https://unpkg.com/axios/dist/axios.min.js"></script>

<script type="text/javascript" src="https://unpkg.com/vue/dist/vue.min.js"></script>

<script type="text/javascript" src="https://unpkg.com/@ncform/ncform-common/dist/ncformCommon.min.js"></script>
<script type="text/javascript" src="https://unpkg.com/@ncform/ncform/dist/vueNcform.min.js"></script>

<script type="text/javascript" src="https://unpkg.com/element-ui/lib/index.js"></script>
<script type="text/javascript" src="https://unpkg.com/@ncform/ncform-theme-elementui/dist/ncformStdComps.min.js"></script>-->


<script type="text/javascript" src = "js/axios.min.js"></script>
<script type="text/javascript" src = "js/vue.min.js"></script>
<script type="text/javascript" src = "js/ncformCommon.min.js"></script>
<script type="text/javascript" src = "js/vueNcform.min.js"></script>
<script type="text/javascript" src = "js/ncform_index.js"></script>
<script type="text/javascript" src = "js/ncformStdComps.min.js"></script>


<script type="text/javascript">

    //const axios = require('axios');

    Vue.use(vueNcform, { extComponents: ncformStdComps });

    // Bootstrap the app
    new Vue({
        el: '#demo',
        data: {
            formSchema: {
                type: 'object',
                properties: {
                    name: {
                        type: 'string',
                        rules: {
                            required: true,
                            maxLength: 10,
                        },
                        ui: {

                            columns: 12, // 占用列数,一共12列。6代表占一半
                            label: 'First Name', // 标签内容
                            showLabel: false, // 是否显示标签(当为false不显示时,依然占着空间)
                            noLabelSpace: false, // 标签是否不占空间,优先级比showLabel高
                            legend: '', // 标题内容,当对象,数组布局数据类型时有效
                            showLegend: false, // 是否显示标题
                            placeholder: '请输入用户名', // 占位内容【支持dx表达式】
                            disabled: false, // 是否禁用【支持dx表达式】
                            readonly: false, // 是否只读【支持dx表达式】
                            hidden: false, // 是否隐藏【支持dx表达式】

                            itemClass: '', // 给表单项添加的样式名
                        },

                    },
                    "email": {
                        "type": "string",
                        ui: {

                            columns: 6, // 占用列数,一共12列。6代表占一半
                            label: 'First Name', // 标签内容
                            showLabel: false, // 是否显示标签(当为false不显示时,依然占着空间)
                            noLabelSpace: false, // 标签是否不占空间,优先级比showLabel高
                            legend: '', // 标题内容,当对象,数组布局数据类型时有效
                            showLegend: false, // 是否显示标题
                            placeholder: '请输入邮箱', // 占位内容【支持dx表达式】
                            disabled: false, // 是否禁用【支持dx表达式】
                            readonly: false, // 是否只读【支持dx表达式】
                            hidden: false, // 是否隐藏【支持dx表达式】

                            itemClass: '', // 给表单项添加的样式名
                        },
                    },
                    "age": {
                        "type": "integer",
                        ui: {

                            columns: 6, // 占用列数,一共12列。6代表占一半
                            label: 'First Name', // 标签内容
                            showLabel: false, // 是否显示标签(当为false不显示时,依然占着空间)
                            noLabelSpace: false, // 标签是否不占空间,优先级比showLabel高
                            legend: '', // 标题内容,当对象,数组布局数据类型时有效
                            showLegend: false, // 是否显示标题
                            placeholder: '请输入年龄', // 占位内容【支持dx表达式】
                            disabled: false, // 是否禁用【支持dx表达式】
                            readonly: false, // 是否只读【支持dx表达式】
                            hidden: false, // 是否隐藏【支持dx表达式】

                            itemClass: '', // 给表单项添加的样式名
                        },
                    },
                    "adult": {
                        "type": "boolean",
                        ui: {

                            columns: 6, // 占用列数,一共12列。6代表占一半
                            label: 'First Name', // 标签内容
                            showLabel: false, // 是否显示标签(当为false不显示时,依然占着空间)
                            noLabelSpace: false, // 标签是否不占空间,优先级比showLabel高
                            legend: '', // 标题内容,当对象,数组布局数据类型时有效
                            showLegend: false, // 是否显示标题
                            placeholder: 'test', // 占位内容【支持dx表达式】
                            disabled: false, // 是否禁用【支持dx表达式】
                            readonly: false, // 是否只读【支持dx表达式】
                            hidden: false, // 是否隐藏【支持dx表达式】

                            itemClass: '', // 给表单项添加的样式名
                        },
                    }
                },

            }
        },
        methods: {
            submit() {
                this.$ncformValidate('form-1').then(data => {
                    if (data.result) {
                        param_dict = {}
                        param_dict["name"] = this.$data.formSchema.value.name
                        param_dict["email"] = this.$data.formSchema.value.email
                        param_dict["age"] = this.$data.formSchema.value.age
                        console.log(param_dict)
                        axios.get('/user?param='+ param_dict)
                            .then(function (response) {
                                // handle success
                                console.log(response);
                            })
                            .catch(function (error) {
                                // handle error
                                console.log(error);
                            })
                            .then(function (data) {
                                // always executed
                                console.log("")
                            });
                    }

                });
            }
        }
    });
</script>
</body>

</html>

request 请求使用的是axios

效果

image.png

ncform使有总结

对使用bootstrap或单独使用vue的表单校验,真是方便大多了
并且对一些校验,提示都已经帮做好了样式,而且还挺好看的。

https://github.com/ncform/ncform/blob/master/CONFIG_CN.md

相关文章

  • ncform初试

    ncform是什么 ncform是vipshop开源的js动态表单,使用了element前端风格 ncform的h...

  • 华山论“单”

    号外号外!唯品会第一个前端开源项目来啦,就是它 - ncform 官方github:https://github....

  • 附件上传的三种前端组件

    介绍 项目开发中,经常用到上传功能个人用了几个不同的前端组件,都挺好用的,各种千秋。 ncform webuplo...

  • 人间自是有情痴,次恨无关风和月

    初试

  • 初试

    不正确的纸,不正确的笔,纸推笔也只是纸巾自己折的,第一次看着木木的新月做的练习,画完心情平静多了,虽然还是有点堵……

  • 初试

    之前没有接触过也没有想过好好的写一些东西,比如记录生活中的点点滴滴,心情好的不好的时候的记录。 之所以写这个文章,...

  • 初试

    我带着幸福家和冯导满满儿的爱和入脑、入心、入肌肉的能量,踏上了回家的旅程。 推开才分别几天的家门时,脑海里竟然浮现...

  • 初试

    梦想 梦想之路 注定不会那么平坦 我们因梦想而伟大,所有的成功者都是大梦想家:在冬夜的火堆旁,在阴天的雨雾中...

  • 初试

    一个陌生朋友在群里分享的简书 顺手下载了 现正在试用

  • 初试—

    故事发生在上个世纪九十年代,那个时候改革开放已经二十多年,但是人的思想解放程度远远不及现在。 华在兄弟姊妹中排行老...

网友评论

    本文标题:ncform初试

    本文链接:https://www.haomeiwen.com/subject/rvmpmftx.html