element ui之el-form 三两句

最近在学习饿了么团队组件库element-ui ~ 留几句小感言吧
el-form 标签,就是js表单的内核,包裹成组件样式。
大致架构为
el-form
–el-form-item
–el-XXX
这样的结构,内层表单元素由一个个的el-form-item包裹住。

个人在学习开发过程中认为比较有用和必要的几个组件属性

–el-form标签的 label-width 属性:用于设置el-form-item的label字段的宽度,el-form为全局设置,也可以单独在el-form-item中单独设置每一个。

–el-form-item的label属性,用于给表单域命名,表明该区域是填写什么内容得~

–el-form 的rules 属性,这个是重中之重,传入一个rules对象,该对象为表单域的填写规则的集合。相对应的在每一个el-form-item中有一个prop属性,对应相应的rules相对应的属性描述的规则。如下:

表单部分:注意el-form的rules属性 以及el-form-item的prop属性

<el-form :model='movie' ref='form'  size="samll" label-position='left' :rules='rules'>``
    <el-row :gutter='15'>
        <el-col :span='12'>
            <el-form-item label='影片名称' label-width="80px" prop="name">
                <el-input v-model="movie.name"></el-input>
            </el-form-item>
        </el-col>
        <el-col :span='12'>
            <el-form-item label='导演' label-width="80px" prop="director">
                <el-input v-model="movie.director"></el-input>
            </el-form-item>
        </el-col>
    </el-row>
   
    
    <el-row :gutter='15'>
        <el-col :span='12'>
            <el-form-item label='发片国家' label-width="80px" prop="country">
                <el-input v-model="movie.country"></el-input>
            </el-form-item>
        </el-col>
        <el-col :span='12'>
            <el-form-item label='上映时间' label-width="80px" prop="showDate">
                <el-input v-model="movie.showDate"></el-input>
            </el-form-item>
        </el-col>
    </el-row>


    <el-row :gutter='15'>
        <el-col :span='12'>
            <el-form-item label='语言' label-width="80px" prop="language">
                <el-input v-model="movie.language"></el-input>
            </el-form-item>
        </el-col>
        <el-col :span='12'>
            <el-form-item label='时长' label-width="80px" prop="duration">
                <el-input v-model="movie.duration"></el-input>
            </el-form-item>
        </el-col>
    </el-row>
    
    <el-form-item label='编剧' label-width="80px" prop="writer">
        <el-input v-model="movie.writer"></el-input>
    </el-form-item>
    <el-form-item label='演员' label-width="80px" prop="actor">
        <el-input v-model="movie.actor"></el-input>
    </el-form-item>
    <el-form-item label='观影链接' label-width="80px" prop="url">
        <el-input v-model="movie.url"></el-input>
    </el-form-item>
    <el-form-item label='电影简介' label-width="80px" prop="summary">
        <el-input v-model="movie.summary" type='textarea'></el-input>
    </el-form-item>

    <el-form-item>
        <el-button type="primary" @click="submitForm('ruleForm')">提交</el-button>
        <el-button @click="resetForm('ruleForm')">重置</el-button>
    </el-form-item>

</el-form>

js部分:注意rules对象以及内部的属性和上面代码中的el-form-item的prop属性的对应关系

data(){
	return{
		rules:{
                name:[{required:true,message:'请输入影片名称',trigger:'blur'}],
                director:[{required:true,message:'请填写导演名字',trigger:'blur'}],
                writer:[{required:true,message:'请填写编剧名字',trigger:'blur'}],
                actor:[{required:true,message:'请填写演员名字',trigger:'blur'}],
                type:[{required:true,message:'请填影片类型',trigger:'blur'}],
                country:[{required:true,message:'请填写出版国家',trigger:'blur'}],
                showDate:[{required:true,message:'请填写上映日期',trigger:'blur'}],
                language:[{required:true,message:'请填写语言类型',trigger:'blur'}],
                duration:[{required:true,message:'请填写影片时长',trigger:'blur'}],
                url:[{validator:checkUrl,trigger:'blur'}],
                summary:[{required:true,message:'请填写电影简介',trigger:'blur'}]
            }
    }
}

el-form也可以自定义规则:如下
在vue data() 函数中声明对应的规则,并且添加到对应prop属性中,语法如下:

data(){
        var checkUrl =(rule,value,callback)=>{
            let ex1 = /^https:\/\//;
            let ex2 = /^http:\/\//;
            if(!value){
                return callback(new Error('链接不能为空'));
            }else if(!value.match(ex1)&&!value.match(ex2)){
                return callback(new Error('请输入正确格式的地址'));
            }else{
                return callback();
            }
        }
        return {
			rules:{
				 url:[{validator:checkUrl,trigger:'blur'}]
			}
		}
}

你可能感兴趣的:(组件)