详解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 相关文章推荐
jquery png 透明解决方案(推荐)
Aug 21 Javascript
javascript获取隐藏元素(display:none)的高度和宽度的方法
Jun 06 Javascript
js判断文本框输入的内容是否为数字
Dec 23 Javascript
表单中单选框添加选项和移除选项
Jul 04 Javascript
Bootstrap在线电子商务网站实战项目5
Oct 14 Javascript
微信小程序开发之圆形菜单 仿建行圆形菜单实例
Dec 12 Javascript
JS数字千分位格式化实现方法总结
Dec 16 Javascript
JS实现经典的中国地区三级联动下拉菜单功能实例【测试可用】
Jun 06 Javascript
p5.js绘制创意自画像
Nov 04 Javascript
Vue解析剪切板图片并实现发送功能
Feb 04 Javascript
JavaScript 引用类型实例详解【数组、对象、严格模式等】
May 13 Javascript
js实现缓动动画
Nov 25 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 和 MySQL 基础教程(一)
2006/10/09 PHP
常用表单验证类,有了这个,一般的验证就都齐了。
2006/12/06 PHP
?生?D片??C字串
2006/12/06 PHP
解析PHP可变函数的经典用法
2013/06/20 PHP
PHP_Cooikes不同页面无法传递的解决方法
2014/03/07 PHP
Yii2配置Nginx伪静态的方法
2017/05/05 PHP
JavaScript 继承使用分析
2011/05/12 Javascript
Javascript中产生固定结果的函数优化技巧
2013/01/16 Javascript
javascript full screen 全屏显示页面元素的方法
2013/09/27 Javascript
详谈JavaScript内存泄漏
2014/11/14 Javascript
使用Javascript简单实现图片无缝滚动
2014/12/05 Javascript
JavaScript检测字符串中是否含有html标签实现方法
2015/07/01 Javascript
移动端JQ插件hammer使用详解
2015/07/03 Javascript
javascript实现查找数组中最大值方法汇总
2016/02/13 Javascript
JS Ajax请求如何防止重复提交
2016/06/13 Javascript
AngularJS HTML DOM详解及示例代码
2016/08/17 Javascript
Select2.js下拉框使用小结
2016/10/24 Javascript
JS实现的数字格式化功能示例
2017/02/10 Javascript
javascript 动态生成css代码的两种方法
2017/03/17 Javascript
JS简单生成随机数(随机密码)的方法
2017/05/11 Javascript
nodejs实现简单的gulp打包
2017/12/21 NodeJs
uni-app如何实现增量更新功能
2020/01/03 Javascript
jQuery加PHP实现图片上传并提交的示例代码
2020/07/16 jQuery
微信小程序向Java后台传输参数的方法实现
2020/12/10 Javascript
[01:03:41]完美世界DOTA2联赛PWL S3 DLG vs Phoenix 第一场 12.17
2020/12/19 DOTA
python内存管理分析
2015/04/08 Python
python学习教程之使用py2exe打包
2017/09/24 Python
flask框架视图函数用法示例
2018/07/19 Python
详解Python中的各种转义符\n\r\t
2019/07/10 Python
python解析多层json操作示例
2019/12/30 Python
欧缇丽英国官方网站:Caudalie英国
2016/08/17 全球购物
如何开启linux的ssh服务
2013/06/03 面试题
品牌推广策划方案
2014/05/28 职场文书
优秀应届生求职信
2014/06/16 职场文书
关于环保的广播稿
2015/12/17 职场文书
国庆节到了,利用JS实现一个生成国庆风头像的小工具 详解实现过程
2021/10/05 Javascript