详解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 相关文章推荐
动态刷新 dorado树的js代码
Jun 12 Javascript
imgAreaSelect 中文文档帮助说明
Oct 08 Javascript
jquery图片轮播插件仿支付宝2013版全屏图片幻灯片
Apr 03 Javascript
PHP实现的各种中文编码转换类分享
Jan 23 Javascript
js实现时间显示几天前、几小时前或者几分钟前的方法集锦
May 29 Javascript
JavaScript 闭包详细介绍
Sep 28 Javascript
深入了解javascript 数组的sort方法
Jun 01 Javascript
使用Phantomjs和Node完成网页的截屏快照的方法
Jul 16 Javascript
JS中的算法与数据结构之链表(Linked-list)实例详解
Aug 20 Javascript
js将URL网址转为16进制加密与解密函数
Mar 04 Javascript
详解Vue 数据更新了但页面没有更新的 7 种情况汇总及延伸总结
May 28 Javascript
selenium 反爬虫之跳过淘宝滑块验证功能的实现代码
Aug 27 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投票系统的设计和实现分享
2012/09/23 PHP
PHP实现算式验证码和汉字验证码实例
2015/03/09 PHP
php基于CodeIgniter实现图片上传、剪切功能
2016/05/14 PHP
PHP实现的登录页面信息提示功能示例
2017/07/24 PHP
javascript 基础篇2 数据类型,语句,函数
2012/03/14 Javascript
JQueryiframe页面操作父页面中的元素与方法(实例讲解)
2013/11/19 Javascript
js读取csv文件并使用json显示出来
2015/01/09 Javascript
在jQuery中使用$而避免跟其它库产生冲突的方法
2015/08/13 Javascript
js实现继承的5种方式
2015/12/01 Javascript
jQuery实现页面顶部显示的进度条效果完整实例
2015/12/09 Javascript
jQuery操作Table技巧大汇总
2016/01/23 Javascript
jQuery选择器基础入门教程
2016/05/10 Javascript
javascript中的replace函数(带注释demo)
2018/01/07 Javascript
React-router4路由监听的实现
2018/08/07 Javascript
JavaScript实现轮播图片完整代码
2020/03/07 Javascript
jQuery实现的分页插件完整示例
2020/05/26 jQuery
[02:16]深扒TI7聊天轮盘语音出处2
2017/05/11 DOTA
python网络编程学习笔记(二):socket建立网络客户端
2014/06/09 Python
初学Python实用技巧两则
2014/08/29 Python
Python小程序 控制鼠标循环点击代码实例
2019/10/08 Python
Windows下Anaconda和PyCharm的安装与使用详解
2020/04/23 Python
pycharm 2018 激活码及破解补丁激活方式
2020/09/21 Python
如何解决pycharm调试报错的问题
2020/08/06 Python
Python实现钉钉/企业微信自动打卡的示例代码
2021/02/02 Python
香港卓悦化妆品官网:BONJOUR
2017/09/21 全球购物
英国女性时尚品牌:Apricot
2018/12/04 全球购物
Swanson中国官网:美国斯旺森健康产品公司
2021/03/01 全球购物
几道Java和数据库的面试题
2013/05/30 面试题
超市采购员岗位职责
2014/02/01 职场文书
股东协议书
2014/04/14 职场文书
医学求职信
2014/05/28 职场文书
会计系毕业生求职信
2014/05/28 职场文书
银行纠风工作实施方案
2014/06/08 职场文书
新闻编辑求职信
2014/07/13 职场文书
反腐倡廉警示教育活动心得体会
2014/09/04 职场文书
朋友圈早安励志语录!
2019/07/08 职场文书