美文网首页
7.2.3props数据验证

7.2.3props数据验证

作者: 咸鱼前端 | 来源:发表于2019-03-03 09:09 被阅读0次
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>7.2.3数据验证</title>
        <style>
            [v-cloak]{
                display: none;
            }
        </style>
    </head>
    <body>
        <div id="app" v-cloak>
            <parent></parent>
        </div>
        <script type="text/javascript" src="/node_modules/vue/dist/vue.js"></script>
        <script type="text/javascript">
            /*props的几个示例:
            Vue.component("my-component",{
                props: {
                    //必须是数字类型
                    propA: Number,
                    //必须是字符串或数字类型
                    propB: [String,Number],
                    //布尔值,如果没有定义,默认值就是true
                    propC: {
                        type: Boolean,
                        default: true
                    },
                    //数字,而且是必传
                    propD: {
                        type: Number,
                        required: true
                    },
                    //如果是数组或对象,默认值必须是一个函数来返回
                    propE: {
                        type: Array,
                        default: function () {
                            return [];
                        }
                    },
                    propF: {
                        validator: function (value) {
                            return value > 10;
                        }
                    }
                }
            });*/
            /*1.数字类型的验证
            var childNode = {
                template: "<div>{{ message }}</div>",
                props: {
                    "message": Number,
                }
            };//创建子组件,设置好模板,props接收传过来的数据"message"必须是 Number 类型,能够接收的类型有 String,Number,Boolean,Function,Object,Array*/
            //2.自定义验证函数
            var childNode = {
              template: `<div>数字类型:{{number}} , 数组类型:{{array}} , 布尔类型默认{{boolean}} , 字符串类型{{string}} , 自定义验证函数{{validator}},自定义验证函数内是value值大于10才不会报错,所以11正常输出</div>`,
              props:{
                'number': {
                    type: Number,
                    required: true,
                },
                'array': {
                    type: Array,
                    default: function () {
                        return [];
                    }
                },
                'boolean': {
                    type: Boolean,
                    default: true
                },
                'string': {
                    type: String,
                    required: true
                },
                'validator': {
                    validator: function(value){
                        return value > 10;
                    }
                } 
              }
            };
            var parentNode = {
                template: `<div class='parent'>
                                        <child :number="number" :array="arrLists" :string="string" :validator="validator"></child>
                                     </div>`,//创建好父组件的模板
                components: {
                    "child": childNode
                },//注册子组件到父组件上,因为父组件上用了子组件
                data () {
                    return {
                        //message: "abc"//这里因为子组件规定了传入的 "message" 必须是数字类型,这里是字符串,所以控制台会报错
                        message: 123,//这样传入值才不会报错
                        arrLists: ['123123','123123'],
                        number: 123,
                        string: 'abc',
                        validator: 11
                        //message: '123'//这样传入依然会报错,因为此时的 "message" 是字符串类型。
                    }
                },//定义父组件上的data,组件上的data必须是函数形式,用return返回值
            }
            var vm = new Vue({
                el: "#app",
                components: {
                    "parent": parentNode
                }//注册父组件到根元素上
            })
        </script>
    </body>
    </html>
    

    相关文章

      网友评论

          本文标题:7.2.3props数据验证

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