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的细节的更多相关文章

  1. vue经验 - 细节小知识点汇总(更新中...)

    1. $refs 数据这么绑定的: 然后在created中抛出来,猜猜看看打印的是两个什么? 结果如下: 第一个跑出来了,第二个,却undefiend,没有东西?!... 后来去官网查看$refs的解 ...

  2. Vue 使用细节收集

    JSX 中 on 开头的属性名 在用 elementui 中的 el-upload 的时候,他们组件中有一个属性 on-change ,也不知道谁想出来的属性名,太扯淡了,非要 on 开头,我开始的代 ...

  3. vue路由细节探讨

    1.使用router-link 不会让页面刷新,使用a标签会使页面刷新.2.router-link 里面的to="/路由地址" tag=""自定义标签" ...

  4. MVVM以及vue的双向绑定

    原文:https://www.cnblogs.com/onepixel/p/6034307.html MVVM 是Model-View-ViewModel 的缩写,它是一种基于前端开发的架构模式,其核 ...

  5. MVC,MVVM,MVP的区别/ Vue中忽略的知识点!

    按照顺序学习: https://scotch.io/courses/build-an-online-shop-with-vue/hello-world Vue Authentication And R ...

  6. vue入门全局配置

    全局配置 Vue.config 是一个对象,包含 Vue 的全局配置.可以在启动应用之前修改下列属性: silent 类型:boolean 默认值:false 用法: Vue.config.silen ...

  7. Vue.js 和 MVVM

    MVVM 是Model-View-ViewModel 的缩写,它是一种基于前端开发的架构模式,其核心是提供对View 和 ViewModel 的双向数据绑定,这使得ViewModel 的状态改变可以自 ...

  8. Vue.js 和 MVVM 小细节

    MVVM 是Model-View-ViewModel 的缩写,它是一种基于前端开发的架构模式,其核心是提供对View 和 ViewModel 的双向数据绑定,这使得ViewModel 的状态改变可以自 ...

  9. 使用keepAlive对上下拉刷新列表数据 和 滚动位置细节处理 - vue

    [前言] 使用vue处理项目中遇到列表页面时,之前项目中总会有一些细节问题处理得不太好,这里总结一下,以便优化以后的代码.如下: 1. 使用mint-ui中的LoadMore组件上下拉刷新时,有时无法 ...

随机推荐

  1. SSIS ->> Environment Variables

    SQL Server Integration Services(SSIS) 在2012版本引入了Environment Variables这个新特性.它允许我们为一个环境创建出一套变量用于为项目内的包 ...

  2. Ubuntu安装使用pyltp和StanfordCoreNLP

    环境:Ubuntu 16.04+anaconda3 一.pyltp 1. 安装 直接用pip安装: pip install pyltp 然后下载语言模型库,网址:https://pan.baidu.c ...

  3. JAVA中的那些名词解释!

    1.JDO: (Java Data Object )是Java对象持久化的新的规范,也是一个用于存取某种数据仓库中的对象的标准化API.作用:用于存取某种数据仓库中的对象 2.JPA: JPA是Jav ...

  4. backtrack渗透测试中常用的命令总结

    ping 域名/ip 测试本机到远端主机是否联通. dig 域名/ip 查看域名解析的详细信息. host -l 域名 dns服务器 传输zone. 扫描 nmap: -sS 半开扫描TCP和SYN扫 ...

  5. Wifi密码破解

    Wifi密码破解1:通过字典(暴力)破解WIFI密码   简单破解WEP/WPA/WPA2加密的WIFI密码,平台kali-linux 工具:Aircrack-ng 过程很简单:先抓含有正确密码的握手 ...

  6. 一直在用的一个javascript网站

    http://www.dottoro.com/ 很不错,例子丰富,解释详细,全面:非常好的参考资料站.

  7. webConfig详细跳转配置.[转]

    站更换域名,把旧域名用301指到新域名来. 从iis中设置url永久转向就可以,看上去很容易,用了一会儿才发现,参数都没有带上. 从微软网站上找到如下说明,果然好使: 重定向参考 (IIS 6.0,7 ...

  8. JDK工具系列之jps

    一.简介 jps(JVM Process Status Tool)是虚拟机进程状态工具:可以列出正在运行的虚拟机进程,显示虚拟机正在执行的main()函数,及这些进程的ID(LVMID,Local V ...

  9. jQuery 实现改变图片指定区域的颜色

    javascript本身无法改变图片的颜色,不过我们可以通过一些技巧来实现一样的效果. 1.首先我们要知道图片哪些区域需要改变颜色,这里我们可以用执点地图的方法来弄 例1: <img src=& ...

  10. BZOJ1037:[ZJOI2008]生日聚会Party(DP)

    Description 今天是hidadz小朋友的生日,她邀请了许多朋友来参加她的生日party.hidadz带着朋友们来到花园中,打算坐成一排玩游戏. 为了游戏不至于无聊,就座的方案应满足如下条件: ...