Vue学习小结(二)
接上一批,小结(二)。
三、导航内容(含左侧导航及顶部面包屑导航)
其实导航条主要根据element-ui的教程进行编写,官网:http://element-ui.cn/#/zh-CN/component。左侧导航为NaveMenu导航菜单,地址:http://element-ui.cn/#/zh-CN/component/menu,顶部为面包屑导航,地址:http://element-ui.cn/#/zh-CN/component/breadcrumb。多掌握组件的写法吧,简单上手,但是真的精通还是需要下很多功夫研究的,根据示例写好后,主要就是改样式到符合要求的格式。这里可以选择很多新的CSS预处理器,sass、less还有stylus这几种,其实主要就是方便编写CSS样式,用最基础的CSS也可。布局可以通过el-col的方式布局,完成后为响应式布局,根据窗口缩放。
左侧导航如果完全根据ui组件来做,实际上不难。但是如果不根据ui组件来做,就需要自己采用v-for循环将导航内容全部显示出来,上面可以定义二级菜单展开关闭及路由跳转等事件,ui组件其实封装了这一块,所以如果导航菜单不是很多的时候建议可以采用ui组件来做的,代码也显得清楚易懂些。
面包屑导航,主要是el-breadcrumb-item,里面的内容第一条to表示可以点击跳转到该路由,第二条为面包屑导航的后面内容。第二个div中为顶部导航栏右侧内容,根据实际需要情况改变,我这里主要是回到首页和退出登录两个事件按钮,还有一个是欢迎语。
<template>
<div class="header">
<el-breadcrumb separator="/">
<el-breadcrumb-item :to="{ path: '/main' }">INFO首页</el-breadcrumb-item>
<el-breadcrumb-item v-for="(item, index) in $route.meta" :key="index">{{item}}</el-breadcrumb-item>
</el-breadcrumb>
<div style="margin-right:20px">
<span>Welcome, {{userName}}!</span>
<el-button type="text" @click="home">[回到首页]</el-button>
<el-button type="text" @click="logout">[退出登录]</el-button>
</div>
</div>
</template>
这里说到路由,路由就是单页面应用的前面的主网址后面添加的不同名称的地址即不同的页面。直接上代码:
import Vue from 'vue'
import Router from 'vue-router'
Vue.use(Router) const login = resolve => require(["@/page/login/login"], resolve); const main = resolve => require(["@/page/main/main"], resolve);
const home = resolve => require(["@/page/home/home"], resolve);
const weather = resolve => require(["@/page/weather/weather"], resolve);
const tableOperation = resolve => require(["@/page/tableManager/tableOperation"], resolve);
const quillEditor = resolve => require(["@/page/tableManager/quillEditor"], resolve);
const starNews = resolve => require(["@/page/allNews/starNews"], resolve);
const explain = resolve => require(["@/page/explain/explain"], resolve); export default new Router({
routes: [
{
path: '/',
component: login
},
{
path: '/main',
component: main,
children: [{
path: '',
component: home,
meta: [],
}, {
path: '/weather',
component: weather,
meta: ['天气预报', '实时天气'],
},
{
path: '/tableOperation',
component: tableOperation,
meta: ['数据管理', '表格操作'],
},
{
path: '/quillEditor',
component: quillEditor,
meta: ['数据管理', '文本编辑'],
},
{
path: '/starNews',
component: starNews,
meta: ['新闻资讯', '明星八卦'],
},
{
path: '/explain',
component: explain,
meta: ['说明', '说明'],
}, ]
}
]
})
要引入并使用vue-router模块,然后是根据路径来定义路径的组件名const main = resolve => require(["@/page/main/main"], resolve),最后在routes里面添加组件名,其中meta为面包屑导航需要的字段,代表了一种层级关系,children为在主视图下的二级路由视图,这点其实蛮有用的,路由视图就是<router-view></router-view>标签代表的内容。第一个路由视图在APP.vue里面,代表后面所有的内容,第二个在主文件里再次二次视图,代表左侧导航和顶部导航都不用重新加载。
四、其他。
其实写了这些有点不知道些什么下去了,过程中遇到的问题肯定是很多,学习是一个痛苦和快乐的过程,查不到解决方法时候的痛苦,做出来之后的喜悦。项目里难度最大的应该属于表格操作页了,增删改查,提交更改上传文件等等功能都有实现,借助了很多ui组件封装好的功能,部分也需要自己写逻辑。最困难的地方就是多条件查询了吧,实在是琢磨了好久,在网上找了好久,最后是用filter方法进行过滤表格数据完成的,需要弄清楚的是filter方法返回的是参数里值为真的数据,抓住这个重点就好了。
search(searchForm) {
this.results = this.list.filter(item => {
let MatchBusiness = true;
let MatchDep = true;
let MatchMajor = true;
let MatchSystemType = true;
let MatchStatus = true;
if (searchForm.depName) {
MatchDep = item.depName == searchForm.depName;
}
if (searchForm.majorName) {
MatchMajor = item.majorName == searchForm.majorName;
}
if (searchForm.status) {
MatchStatus = item.status == searchForm.status;
}
if (searchForm.busiSystem) {
// 模糊搜索;
let key = searchForm.busiSystem.trim();
MatchBusiness = item.busiSystem.indexOf(key.trim()) != -1;
}
if (searchForm.systemType) {
// 模糊搜索;
let key = searchForm.systemType.trim();
MatchSystemType = item.systemType.indexOf(key.trim()) != -1;
}
return (
MatchBusiness &&
MatchDep &&
MatchMajor &&
MatchSystemType &&
MatchStatus
);
});
},
然后其他增删改就简单很多,利用js的push和splice方法完成,splice可删可改,删除就是讲当前索引下的数据替换为无this.tableData.splice(i, 1),修改则是新的数据替换
Vue学习小结(二)的更多相关文章
- python --- 字符编码学习小结(二)
距离上一篇的python --- 字符编码学习小结(一)已经过去2年了,2年的时间里,确实也遇到了各种各样的字符编码问题,也能解决,但是每次都是把所有的方法都试一遍,然后终于正常.这种方法显然是不科学 ...
- vue学习【二】vue结合axios动态引用echarts
大家好,我是一叶,本篇是vue学习的第二篇,本篇将要讲述vue结合axios动态引用echarts. 在vue中,异步刷新使用的是axios,类似于大家常用的ajax,其实axios已经是vue的第二 ...
- Vue学习小结(一)安装依赖与数据来源
不多说啥了,生活中都是各种阵痛与惊喜.最近在学习vue框架,刚写完一个小型的后台管理系统(https://github.com/michaelzhengzm/info-manager-systerm_ ...
- vue学习笔记(二)vue的生命周期和钩子函数
前言 通过上一章的学习,我们已经初步的了解了vue到底是什么东西,可以干什么,而这一篇博客主要介绍vue的生命周期和它常用的钩子函数,如果有学过java的园友可能有接触到在学习servlet的时候学过 ...
- vue学习之二ECMAScript6标准
一.ECMAScript6标准简述 ECMAScript 6.0(以下简称 ES6)是 JavaScript 语言的下一代标准,已经在 2015 年 6 月正式发布了.它的目标,是使得 JavaScr ...
- vue学习(二)Vue常用指令
2 Vue常用指令 1. vue的使用要从创建Vue对象开始 var vm = new Vue(); 2. 创建vue对象的时候,需要传递参数,是json对象,json对象对象必须至少有两个属性成员 ...
- Vue学习笔记二:v-cloak,v-text,v-html的使用
目录 v-cloak:解决插值表达式闪烁问题 安装插件Live Server 右键以HTTP形式运行HTML v-text:以属性方式使用插值表达式 v-cloak和v-text的区别 v-html: ...
- VUE 学习笔记 二 生命周期
1.除了数据属性,Vue 实例还暴露了一些有用的实例属性与方法.它们都有前缀 $,以便与用户定义的属性区分开来 var data = { a: 1 } var vm = new Vue({ el: ' ...
- Vue学习小结
ES6 let完全可以取代var const声明一个只读的常量 箭头函数:可以绑定this对象,大大减少了显式绑定this对象的写法(call.apply.bind) 函数绑定(function bi ...
随机推荐
- AngularJS之备忘与诀窍
译自:<angularjs> 备忘与诀窍 目前为止,之前的章节已经覆盖了Angular所有功能结构中的大多数,包括指令,服务,控制器,资源以及其它内容.但是我们知道有时候仅仅阅读是不够的. ...
- Apriori算法思想和其python实现
第十一章 使用Apriori算法进行关联分析 一.导语 "啤酒和尿布"问题属于经典的关联分析.在零售业,医药业等我们经常需要是要关联分析.我们之所以要使用关联分析,其目的是为了从大 ...
- LeeCode数组第15题三数之和
题目:三数之和 内容: 给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组. 注意:答案中 ...
- Java批量压缩下载
最近做了一些有关批量压缩下载的功能,网上也找了一些资源,但都不是太全面,所以自己整理一份,已备不时之需. 直接上代码: // 获取项目路径 private static String WEBCLASS ...
- Jvm虚拟机结构与机制
JVM(Java Virtual Machine)在研究JVM的过程中会发现,其实JVM本身就是一个计算机体系结构,很多原理和我们平时的硬件.微机原理.操作系统都有十分相似的地方,所以学习JVM本身也 ...
- MySql在生产环境中是用mysqldump还是xtrabackup备份和恢复数据
如题,究竟该使用mysqldump还是xtrabackup,要说用,两个都能备份,都支持热备,但是生产环境我们要考虑的是效率,就是不管备份还是恢复,都要快,要稳定. 之前我在维护mysql数据库的时候 ...
- spring+jotm+ibatis+mysql实现JTA分布式事务
1 环境 1.1 软件环境 spring-framework-2.5.6.SEC01-with-dependencies.zip ibatis-2.3.4 ow2-jotm-dist-2.1.4-b ...
- XamarinForm Effects 调用事件
原文地址 在Xamarin.Forms控件中实现底层多点触控跟踪. 一个effect可以定义和调用一个事件,在底层本地视图中发出信号的变化.这篇文章演示如何实现底层多点触控跟踪,以及如何生成信号触摸活 ...
- xml序列化和反序列化(二)
上篇讲到关于xml入参实体序列化,下面给出出参实体反序列化,代码如下: /// <summary> /// 反序列化 /// </summary> /// <param ...
- jQuery上下滑动内容切换选项卡
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...