vue的细节
1.如果使用路由跳转到别的界面的话,例如从文章list页面跳转到具体文章查看详情页,查看某一个具体就需要传递那个文章的id去后台查询,
this.$router.push的params方法可以实现传递,但是如果在详情页面再一次刷新,你会发现详情页面数据没有了。就需要用query属性把需要的参数传递过去即可解决问题
this.$router.push({
name: 'ArticleDetail',
query: {
articleId: obj.id,
},
path: '/article/detail',
});
2.讲讲饿了么的插件element-ui的组件el-cascade级联选择器的使用
当时在做二级联动,其实select框也可以实现但是cascade不是更方便嘛。
首先提供了:options属性,只要指定选项数组即可渲染出一个级联选择器。代码如下
<el-cascader
:options="options"
v-model="selectedOptions"
@change="handleChange"
:props="props"
>
</el-cascader>
options数组通过:props来进行数据渲染的。这个属性有三个默认值,value,label,children。可以想象成id,名字和子选项数组,子选项下属性以此类推,还是value,label,children。具体如下图;

可以通过props来修改三个属性值,例如
props: {
value: 'id',
label: 'name',
children: 'subjects',
}
我做的是分类下的主题。是个二级联动。效果如下:

那么就要往options数组中塞值,首先在vue界面声明如下数据,
data() {
return {
props: {
value: 'id',
label: 'name',
children: 'subjects',
},
options: [],
}
}
接着查询出分类下的所有数据,往options中塞值,代码如下:
async function getTopicIds() {
const result = await getSubjects();
if (result.code === 1200) {
const topicIds = [];
const topicArr = [];
result.data.subjects.forEach((sub) => {
const topic = {};
if (topicIds.indexOf(sub.topic.id) === -1) {
topicIds.push(sub.topic.id);
topic.id = sub.topic.id;
topic.name = sub.topic.name;
topic.subjects = [];
topicArr.push(topic);
}
topicArr.forEach((top) => {
if (top.id === sub.topic.id) {
top.subjects.push(sub);
}
});
});
this.options = topicArr;
}
}
这个时候就可以渲染数据了。
js方法getSubjects如下:
export function getSubjects() {
return fetch({
url: '/api/subjects',
method: 'get',
});
}
后台代码:
subject(主题)和Topic(分类)两个类:
import lombok.Data;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.DBRef;
import org.springframework.data.mongodb.core.mapping.Document; import java.util.List; @Data
@Document
public class Subject {
/**
* id
*/
@Id
private String id; /**
* 名称
*/
private String name;/**
* 主题分类
* 父类
*/
@DBRef
private Topic topic; /**
* 删除标志位
*/
private Integer isDeleted; }
import lombok.Data;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.DBRef;
import org.springframework.data.mongodb.core.mapping.Document; import java.util.List; @Data
@Document
public class Topic {
/**
* id
*/
@Id
private String id; /**
* 名称
*/
private String name; /**
* 图片
*/
private String image; /**
* 删除标志位
*/
private Integer isDeleted; }
controller层代码:
/**
* 获取分类下的所有主题
**/
@GetMapping("{topicId}/subjects")
public ResultData getSubject(@PathVariable("topicId") String topicId){
Optional<Topic> topicOptional = topicRepository.findByIdAndIsDeleted(topicId, SimpleStatus.NO.getCode());
if (topicOptional.isPresent()) {
List<Subject> subjectList = subjectRepository.findByTopicAndIsDeleted(topicOptional.get(),SimpleStatus.NO.getCode());
List<SubjectDTO> subjectDTOList = subjectList.stream().map(SubjectDTO::new).collect(Collectors.toList());
return ResultData.ok().putDataValue("subjects",subjectDTOList);
} else {
return ResultData.notFound();
}
}
持久层采用的mongodb,有兴趣的小伙伴可以研究一下
然后是数据回显(例如修改或者查看详情时),级联框的v-model需要进行赋值,elementui中的组件大概都是用id来做检索,所以把selectOptions用分类和分类下的主题id塞值即可,样子如下。
this.selectOptions = [subject.topic.id, subject.id];
新手写博,请多多包涵~
vue的细节的更多相关文章
- vue经验 - 细节小知识点汇总(更新中...)
1. $refs 数据这么绑定的: 然后在created中抛出来,猜猜看看打印的是两个什么? 结果如下: 第一个跑出来了,第二个,却undefiend,没有东西?!... 后来去官网查看$refs的解 ...
- Vue 使用细节收集
JSX 中 on 开头的属性名 在用 elementui 中的 el-upload 的时候,他们组件中有一个属性 on-change ,也不知道谁想出来的属性名,太扯淡了,非要 on 开头,我开始的代 ...
- vue路由细节探讨
1.使用router-link 不会让页面刷新,使用a标签会使页面刷新.2.router-link 里面的to="/路由地址" tag=""自定义标签" ...
- MVVM以及vue的双向绑定
原文:https://www.cnblogs.com/onepixel/p/6034307.html MVVM 是Model-View-ViewModel 的缩写,它是一种基于前端开发的架构模式,其核 ...
- MVC,MVVM,MVP的区别/ Vue中忽略的知识点!
按照顺序学习: https://scotch.io/courses/build-an-online-shop-with-vue/hello-world Vue Authentication And R ...
- vue入门全局配置
全局配置 Vue.config 是一个对象,包含 Vue 的全局配置.可以在启动应用之前修改下列属性: silent 类型:boolean 默认值:false 用法: Vue.config.silen ...
- Vue.js 和 MVVM
MVVM 是Model-View-ViewModel 的缩写,它是一种基于前端开发的架构模式,其核心是提供对View 和 ViewModel 的双向数据绑定,这使得ViewModel 的状态改变可以自 ...
- Vue.js 和 MVVM 小细节
MVVM 是Model-View-ViewModel 的缩写,它是一种基于前端开发的架构模式,其核心是提供对View 和 ViewModel 的双向数据绑定,这使得ViewModel 的状态改变可以自 ...
- 使用keepAlive对上下拉刷新列表数据 和 滚动位置细节处理 - vue
[前言] 使用vue处理项目中遇到列表页面时,之前项目中总会有一些细节问题处理得不太好,这里总结一下,以便优化以后的代码.如下: 1. 使用mint-ui中的LoadMore组件上下拉刷新时,有时无法 ...
随机推荐
- win2008 svn 搬迁
公司说电脑不够用,要我们将本地开发用的服务器贡献出来给别人当办公电脑用..汗 将SVN从一个win2008服务器上搬迁到另一个win2008服务器上面. 先将服务器上面的配置好的svn 跟目录备份下来 ...
- CXPACKET等待事件
今天收到数据库预警,发现连接数较多.于是立马登录查看机器的基本情况: select * from sys.sysprocesses 查看了一下连接数,发现有两个进程都处于CXPACKET状态,而且看得 ...
- Eclipse控制台输出信息的控制(引用其他人的博客)
当你在Eclipse中 running/debugging一个应用程序的时候,有关该应用程序的运行调试信息及日志信息都会输出到控制台(console )显示,但是Eclipse只会显示最后一部分的日志 ...
- Razor模板引擎 (RazorEngine)
Razor模板引擎不仅在ASP.NET MVC中内置了Razor模板引擎,还有一个开源的RazorEngine, 这样以来我们可以在非ASP.NET MVC项目中使用Razor引擎,甚至在控制台,Wi ...
- 超详细Redis入门教程【转】
这篇文章主要介绍了超强.超详细Redis入门教程,本文详细介绍了Redis数据库各个方面的知识,需要的朋友可以参考下 [本教程目录] 1.redis是什么 2.redis的作者何许人也 3.谁在使 ...
- Win10安装msi程序报错2503和2502错误解决方案
刚升级了系统到win10,重新搭建开发环境,在安装scala的时候一直报2503.2502错误,如图 试了好几种办法都不好使,现在罗列依次用到的三种方法: 一.命令提示符(管理员)启动 "w ...
- Oracle 内存使用建议性能视图
下面三个查询结果均可查询出随着内存参数设置的变化性能的变化情况,对oracle数据库内存的设置有一定的建议和指导作用. select t.SGA_SIZE,t.ESTD_DB_TIME_FACTOR ...
- 如何在 MSBuild Target(Exec)中报告编译错误和编译警告
编译错误和编译警告 MSBuild 的 Exec 自带有错误和警告的标准格式,按照此格式输出,将被识别为编译错误和编译警告. 而格式只是简简单单的 error: 开头或者 warning: 开头.冒号 ...
- UEditor 中配置可以跨域访问的图片路径
文档里很清楚:http://fex.baidu.com/ueditor/#server-path 进入配置文件 当域名不是直接配置到项目根目录时,例:http://a.com/b/c 域名下有两文件 ...
- JavaScript的DOM_获取和操作层次节点
一.层次节点的概述 节点的层次结构可以划分为:父节点与子节点.兄弟节点这两种.当我们获取其中一个元素节点的时候,就可以使用层次节点属性来获取它相关层次的节点. 二.childNodes 属性 chil ...