详解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 相关文章推荐
使用TextRange获取输入框中光标的位置的代码
Mar 08 Javascript
随机显示经典句子或诗歌的javascript脚本
Aug 04 Javascript
两个Javascript小tip资料
Nov 23 Javascript
JavaScript中的运算符种类及其规则介绍
Sep 26 Javascript
表单序列化与jq中的serialize使用示例
Feb 21 Javascript
谈谈Jquery中的children find 的区别有哪些
Oct 19 Javascript
原生js实现商品放大镜效果
Jan 12 Javascript
canvas绘制七巧板
Feb 03 Javascript
JavaScript实现反转字符串的方法详解
Apr 27 Javascript
vue中的 $slot 获取插槽的节点实例
Nov 12 Javascript
react antd表格中渲染一张或多张图片的实例
Oct 28 Javascript
一篇文章弄清楚Ajax请求的五个步骤
Mar 17 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
解析PayPal支付接口的PHP开发方式
2010/11/28 PHP
PHP正确配置mysql(apache环境)
2011/08/28 PHP
Smarty的配置与高级缓存技术分享
2012/06/05 PHP
解析file_get_contents模仿浏览器头(user_agent)获取数据
2013/06/27 PHP
php使用session二维数组实例
2014/11/06 PHP
php in_array() 检查数组中是否存在某个值详解
2016/11/23 PHP
laravel接管Dingo-api和默认的错误处理方式
2019/10/25 PHP
javascript 获取图片颜色
2009/04/05 Javascript
jquery 多行滚动代码(附详细解释)
2010/06/17 Javascript
js实现年月日表单三级联动
2020/04/17 Javascript
如何理解Vue的作用域插槽的实现原理
2017/08/19 Javascript
vue中遇到的坑之变化检测问题(数组相关)
2017/10/13 Javascript
JavaScript正则表达式函数总结(常用)
2018/02/22 Javascript
vue利用axios来完成数据的交互
2018/03/23 Javascript
基于Vue-Cli 打包自动生成/抽离相关配置文件的实现方法
2018/12/09 Javascript
Angular value与ngValue区别详解
2019/11/27 Javascript
Vue实现背景更换颜色操作
2020/07/17 Javascript
JavaScript JSON使用原理及注意事项
2020/07/30 Javascript
python 自动提交和抓取网页
2009/07/13 Python
python发送邮件示例(支持中文邮件标题)
2014/02/16 Python
在Python中使用sort()方法进行排序的简单教程
2015/05/21 Python
Python本地与全局命名空间用法实例
2015/06/16 Python
Python爬取新型冠状病毒“谣言”新闻进行数据分析
2020/02/16 Python
使用Html5 Stream开发实时监控系统
2020/06/02 HTML / CSS
html5关于外链嵌入页面通信问题(postMessage解决跨域通信)
2020/07/20 HTML / CSS
小学生读书感言
2014/02/12 职场文书
《地震中的父与子》教学反思
2014/04/10 职场文书
我的祖国演讲稿
2014/05/04 职场文书
乡镇干部个人对照检查材料思想汇报
2014/10/04 职场文书
安全员岗位职责
2015/02/10 职场文书
因家庭原因离职的辞职信范文
2015/05/12 职场文书
入党介绍人意见怎么写
2015/06/03 职场文书
穷人该怎么创业?谨记以下几点
2019/07/11 职场文书
Python基础教程,Python入门教程(超详细)
2021/06/24 Python
Redis做数据持久化的解决方案及底层原理
2021/07/15 Redis
nginx代理实现静态资源访问的示例代码
2022/07/07 Servers