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组件上下拉刷新时,有时无法 ...
随机推荐
- Jmeter对HTTP请求压力测试、并发测试
最近公司需要开发一个简单的报名系统,供外网用户提供报名服务,由于我们公司是个初创的微型公司,开发人员都是刚毕业不久,开发经验相当缺乏. 对于服务器性能测试这块的经验更是少得可以忽略.迫使不得不让我们去 ...
- SQA和系统测试规程
1.SQA计划 (1)目的 本计划是定义Online Judge(在线测评系统)项目的SQA组织,SQA任务和职责,项目过程中应遵循的流程.规范和约定等,指导SQA人员进行评审和审计活动,验证项目的产 ...
- bootstrap colorscheme以及theme自动生成
http://paintstrap.com/ 是一个根据adobe kuler color scheme自动生成theme 的工具,比较直观好用,对于调整前端theme有一定参考意义
- MySQL5.7的组提交与并行复制
从MySQL5.5版本以后,开始引入并行复制的机制,是MySQL的一个非常重要的特性. MySQL5.6开始支持以schema为维度的并行复制,即如果binlog row event操作的是不同的sc ...
- easyui datagrid行编辑中数据联动
easyui的datagrid中行内编辑使用数据联动.即:当编辑产品编号时,该行的产品名称自动根据产品编号显示出来. 在编辑中获取当前行的索引 function getRowIndex(target) ...
- golang 安装 guru vscode 安装失败
1.先从git上复制下来 git clone https://github.com/golang/tools 2.再$GOPATH/bin中安装 go install golang.org/x/too ...
- JavaScrip File类拓展
##今天在做jsp的文件上传功能,想着上传文件后在当前页面把选取的文件信息展现出来,查来查去,发现了js中的file类,之前在w3c和runboob盯了好久找找不到....不过终于还是在网上查到了这个 ...
- ZT JAVA WeakReference
JAVA WeakReference 分类: JAVA 2012-08-28 16:08 305人阅读 评论(0) 收藏 举报 javareferencehashmapcacheclassnull 在 ...
- 用jquery实现的简单数据双向绑定
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Makefile 实例
CROSS_COMPILE = HI_CFLAGS= -Wall -O2 -g -march=armv7-a -mcpu=cortex-a9 -mfloat-abi=softfp -mfpu=vfpv ...