详解ElementUI之表单验证、数据绑定、路由跳转


Posted in Javascript onJune 21, 2017

1.新建表单组件el-form.vue

<template>
  <div class="form">
    <el-form ref="form" :model="UserForm" :rules="this.$store.state.userinfo.CheckRules" label-position="left" label-width="180px">
      <el-form-item label="真实姓名" prop="truename">
        <el-input v-model="UserForm.truename"></el-input>
      </el-form-item>
      <el-form-item label="年龄" prop="age">
        <el-input v-model="UserForm.age"></el-input>
      </el-form-item>
      <el-form-item label="出生年月">
        <el-date-picker type="date" placeholder="选择日期"
                v-model="UserForm.birthday">

        </el-date-picker>
      </el-form-item>
      <el-form-item>
        <el-button type="primary" @click="submitInfo">提交</el-button>
      </el-form-item>
    </el-form>
  </div>

</template>

<style>
  .form{margin-top: 20px;}
</style>

<script>
  export default {
    created(){
      this.UserForm = this.$store.state.userinfo.UserForm;
    },

    beforeDestory(){
      this.$store.state.userinfo.UserForm=this.UserForm;
    },

    data() {
      return {
        UserForm: {
          truename: '',
          age: '',
          birthday: ''
        }
      };
    },

    methods:{
      submitInfo(){
        // 表单验证方法
        this.$refs.form.validate(function (result) {
          if(result){
            // 验证通过,调用module里的setUserInfo方法
            this.$store.dispatch("setUserInfo");
          }else{
            alert("表达验证不合法")
          }
        }.bind(this));
      }
    },
  }
</script>

2.新建一个Module,EleUserInfo.js

import Vue from "vue";
import {routerConfig} from "./../../jssrc/config";

export default{
  state:{
    UserForm:{truename:"", age:"", birthday:""},
    CheckRules:{
      truename:[
        {required:true, message:"请输入活动名称", trigger:'blur'},
        {min:3, max:5, message:"必须3-5个字符", trigger:'blur'}
      ],
      age:[{validator:(rule,value,callback)=>{
        if(/^\d+$/.test(value) == false){
          callback(new Error("年龄只能输入数字"));
        }else{
          callback();
        }
      }, trigger:'blur'}]
    },
  },

  actions:{
    setUserInfo(context){
      // 路由跳转
      routerConfig.push({name:"newslist"});
    }
  }
}

3.我们把jssrc/index.js 中的代码分离出一部分

config.js

import VueRouter from 'vue-router';

import newsdetail from "./../components/news-detail.vue";

import eltable from "./../components/el-table.vue";
import elindex from "./../components/elmentui/el-index.vue";
import elhot from "./../components/elmentui/el-hot.vue";
import eluserinfo from "./../components/elmentui/el-form.vue";

const userlogin = resolve => {
  // 成功之后的回调
  resolve(require("./../components/user-login.vue")); // 这就是异步加载的方式
}

const newslist = resolve => {
  // 成功之后的回调
  resolve(require("./../components/news-list.vue")); // 这就是异步加载的方式
}

// 路由模块
export const routerConfig = new VueRouter({
  routes: [
    { path: '/', component: userlogin},
    { path: '/news', component: newslist, name:"newslist"},
    { path: '/news/:newsid', component: newsdetail, name:"newsdetail"},
    { path: '/login', component: userlogin,name:"userlogin" },
    { path: '/eltable', component: eltable,name:"eltable" },
    { path: '/elindex', component: elindex,name:"elindex", children:[
      {path:"hot",component:elhot,name:"elhot"},
      {path:"userinfo",component:eluserinfo,name:"eluserinfo"},
    ]}
  ]
})

4.然后jssrc/index.js 修改成如下

import Vue from "vue";

import pagenav from "./../components/page-nav.vue";

// 引入
import validate from "./../components/validate";
// 使用
Vue.use(validate);

import VueRouter from 'vue-router';
Vue.use(VueRouter); // 全局使用插件

import VueResource from 'vue-resource';
Vue.use(VueResource);

import UserModule from "./../store/modules/UserModule";
import NewsModule from "./../store/modules/NewsModule";
import EleModule from "./../store/modules/eleModule";
import EleUserInfomoldule from "./../store/modules/EleUserInfo";

import Vuex from 'vuex';
Vue.use(Vuex);

import ElementUI from 'element-ui';
import 'element-ui/lib/theme-default/index.css';
Vue.use(ElementUI);



const vuex_store = new Vuex.Store({
  modules:{
    users:UserModule,
    news:NewsModule,
    ele:EleModule,
    userinfo:EleUserInfomoldule
  }
})


//路由的配置
import {routerConfig} from "./config";


// 全局组件,不加入路由管理
Vue.component("page-nav",pagenav);

let myvue = new Vue({
  el:".container",
  store:vuex_store, //注入到vue
  router:routerConfig,
});

5.查看效果

详解ElementUI之表单验证、数据绑定、路由跳转

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
使用户点击后退按钮使效三行代码
Jul 07 Javascript
javascript 获取url参数和script标签中获取url参数函数代码
Jan 22 Javascript
Jquery选中或取消radio示例
Sep 29 Javascript
纯JS实现根据CSS的class选择DOM
Mar 22 Javascript
jQuery模拟select实现下拉菜单功能
Jun 20 Javascript
微信小程序加载更多 点击查看更多
Nov 29 Javascript
Bootstrap modal 多弹窗之叠加关闭阴影遮罩问题的解决方法
Feb 27 Javascript
javascript基础进阶_深入剖析执行环境及作用域链
Sep 05 Javascript
vue单页开发父子组件传值思路详解
May 18 Javascript
JS实现网页烟花动画效果
Mar 10 Javascript
使用Vue.js和MJML创建响应式电子邮件
Mar 23 Vue.js
分享几个JavaScript运算符的使用技巧
Apr 24 Javascript
Vue实现百度下拉提示搜索功能
Jun 21 #Javascript
vue2.0中click点击当前li实现动态切换class
Jun 21 #Javascript
jQuery实现可拖动进度条实例代码
Jun 21 #jQuery
详解Vue整合axios的实例代码
Jun 21 #Javascript
详解在vue-cli项目中安装node-sass
Jun 21 #Javascript
详解vue-cli中配置sass
Jun 21 #Javascript
详解如何在vue中使用sass
Jun 21 #Javascript
You might like
PHP获取当前日期及本周一是几月几号的方法
2017/03/28 PHP
Laravel 实现Controller向blade前台模板赋值的四种方式小结
2019/10/22 PHP
function, new function, new Function之间的区别
2007/03/08 Javascript
jquery之empty()与remove()区别说明
2010/09/10 Javascript
一些常用的JavaScript函数(json)附详细说明
2011/05/25 Javascript
js 浏览器事件介绍
2012/03/30 Javascript
Javascript中自动切换焦点实现代码
2012/12/15 Javascript
JQuery中关于jquery.js与jquery.min.js的比较探讨
2013/05/15 Javascript
js中for in语句的用法讲解
2015/04/24 Javascript
JavaScript中eval()函数用法详解
2015/12/14 Javascript
jQuery简单实现仿京东分类导航层效果
2016/06/07 Javascript
JavaScript基于replace+正则实现ES6的字符串模版功能
2017/04/25 Javascript
react router 4.0以上的路由应用详解
2017/09/21 Javascript
Vue.js划分组件的方法
2017/10/29 Javascript
jQuery实现导航样式布局操作示例【可自定义样式布局】
2018/07/24 jQuery
解决vue项目nginx部署到非根目录下刷新空白的问题
2018/09/27 Javascript
使用jquery-easyui的布局layout写后台管理页面的代码详解
2019/06/19 jQuery
使用vuex较为优雅的实现一个购物车功能的示例代码
2019/12/09 Javascript
Python实现截屏的函数
2015/07/26 Python
python简单实现操作Mysql数据库
2018/01/29 Python
Python贪心算法实例小结
2018/04/22 Python
Python 使用 attrs 和 cattrs 实现面向对象编程的实践
2019/06/12 Python
使用python实现ftp的文件读写方法
2019/07/02 Python
Python selenium抓取虎牙短视频代码实例
2020/03/02 Python
.NET面试10题
2014/02/24 面试题
初三物理教学反思
2014/01/21 职场文书
九月份红领巾广播稿
2014/01/22 职场文书
爱心助学感谢信
2015/01/21 职场文书
综合测评个人总结
2015/03/03 职场文书
2015年乡镇妇联工作总结
2015/05/19 职场文书
运输公司工作总结
2015/08/11 职场文书
美德少年主要事迹材料
2015/11/04 职场文书
《百分数的认识》教学反思
2016/02/19 职场文书
基于HTML十秒做出淘宝页面
2021/10/24 HTML / CSS
Win11 S Mode版本泄露 正式上线后叫做Windows 11 SE
2021/11/21 数码科技
使用 DataAnt 监控 Apache APISIX的原理解析
2022/07/07 Servers