详解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知识点一 Jquery的ready和Dom的onload的区别
Jan 15 Javascript
javascript实现tabs选项卡切换效果(自写原生js)
Mar 19 Javascript
基于JavaScript实现一定时间后去执行一个函数
Dec 14 Javascript
AngularJS基础 ng-keypress 指令简单示例
Aug 02 Javascript
node网页分段渲染详解
Sep 05 Javascript
JS触摸屏网页版仿app弹窗型滚动列表选择器/日期选择器
Oct 30 Javascript
AngularJS的依赖注入实例分析(使用module和injector)
Jan 19 Javascript
Javascript中类式继承和原型式继承的实现方法和区别之处
Apr 25 Javascript
Angularjs使用过滤器完成排序功能
Sep 20 Javascript
Vue快速实现通用表单验证的示例代码
Jan 09 Javascript
JavaScript编写开发动态时钟
Jul 29 Javascript
vue 使用class创建和清除水印的示例代码
Dec 25 Vue.js
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下使用SimpleXML 处理XML 文件
2010/02/27 PHP
PHP采集腾讯微博的实现代码
2012/01/19 PHP
php从数组中随机抽取一些元素的代码
2012/11/05 PHP
php可应用于面包屑导航的迭代寻找家谱树实现方法
2015/02/02 PHP
php实现两个数组相加的方法
2015/02/17 PHP
Laravel框架使用monolog_mysql实现将系统日志信息保存到mysql数据库的方法
2018/08/16 PHP
jquery Firefox3.5中操作select的问题
2009/07/10 Javascript
js 浏览器事件介绍
2012/03/30 Javascript
解析window.open的使用方法总结
2013/06/19 Javascript
B/S模式项目中常用的javascript汇总
2013/12/17 Javascript
JavaScript使用focus()设置焦点失败的解决方法
2014/09/03 Javascript
JavaScript将数字转换成大写中文的方法
2015/03/23 Javascript
JavaScript返回上一页的三种方法及区别介绍
2015/07/04 Javascript
JavaScript入门教程之引用类型
2016/05/04 Javascript
解决vue router使用 history 模式刷新后404问题
2017/07/19 Javascript
微信小程序 获取javascript 里的数据
2017/08/17 Javascript
js实现浏览器打印功能的示例代码
2020/07/15 Javascript
javascript实现移动端触屏拖拽功能
2020/07/29 Javascript
Python实现识别手写数字 Python图片读入与处理
2020/03/23 Python
python使用tensorflow保存、加载和使用模型的方法
2018/01/31 Python
Pycharm无法使用已经安装Selenium的解决方法
2018/10/13 Python
python绘制散点图并标记序号的方法
2018/12/11 Python
Python中判断子串存在的性能比较及分析总结
2019/06/23 Python
python设置环境变量的原因和方法
2019/06/24 Python
python wxpython 实现界面跳转功能
2019/12/17 Python
Python实现图片查找轮廓、多边形拟合、最小外接矩形代码
2020/07/14 Python
用html5绘制折线图的实例代码
2016/03/25 HTML / CSS
旅游管理专业个人求职信范文
2013/12/24 职场文书
xxx同志考察材料
2014/02/07 职场文书
不打扫卫生检讨书
2014/02/12 职场文书
开展批评与自我批评发言材料
2014/05/15 职场文书
莫言诺贝尔获奖演讲稿
2014/05/21 职场文书
学校感恩节活动策划方案
2014/10/06 职场文书
小学庆六一主持词
2015/06/30 职场文书
六一亲子活动感想
2015/08/07 职场文书
网络安全倡议书(3篇)
2019/09/18 职场文书