今天貌似没什么问题,23333……


1.vue router 路由传参的方式

应用情景:从分类页(category.vue)进入商品列表页(list.vue),需要传递商品分类id(catId),商品分类名称(catName)两个参数,列表页通过路由信息拿到catId,去请求列表内容接口。

路由文件js代码如下:

  1. export default new Router({
  2. routes: [
  3. {
  4. path: '/',
  5. name: 'home',
  6. component: home
  7. },
   {
 
    path: '/category',
 
name: 'category',
 
component: category
 
},
      {
  1. path: '/list',
  2. name: 'list',
  3. component: list
  4. },
  5. {
  6. path: '*',
  7. redirect: '/'
  8. }
  9. ]
  10. })

list表示商品列表页的路由,这里可以不写任何传参的东西

(1)path+query方式

接下来请看分类页的代码:

分类页(category.vue),methods里面页面跳转代码如下:

  1. // category.vue
    methods: {
      toList(catId, catName) {
  2.   this.$router.push({
  3.   path: 'list',
  4.   query: {
  5.   catId: catId,
  6.   catName: catName
  7.   }
  8.   })
  9.   },
  1. }
  1.  

浏览器URL是这样的 http://localhost:8080/#/list?catId=33&catName=%E8%BF%9E%E8%A1%A3%E8%A3%99

(因为这俩参数也不是什么秘密,所以暴露就暴露了吧)

在列表页(list.vue)created钩子函数里面打印路由信息:

  1. // list.vue
    created () {
  2. console.log(this.$route)
  3. })

能看到跳转过来的路由信息:

(2)name + params 方式

路由文件js代码不变

分类页category.vue代码如下:

  1. toList(catId, catName) {
  2. this.$router.push({
  3. name: 'list',
  4. params: {
  5. catId: catId,
  6. catName: catName
  7. }
  8. })
  9. },

浏览器URL是这样的 http://localhost:8080/#/list (不会显示参数)

路由信息如下:

这个方法有个问题,第一次从分类页跳转到列表页没有问题,params是有东西的,我可以正常拿到catId去请求列表接口。但是如果刷新一次列表页,路由信息里面params空了。就无法拿到catId,无法请求内容。。所以,还是第一种方法好,虽然url暴露了参数,但至少可以正常使用。

(3)不知道叫什么,直接看代码:

  1. //?问号的意思是该参数不是必传项
  2. //多个参数用/:id连接
  3. //path: '/Driver/CarManager/CarSetting/:car_id/:page_type',
  4. {
  5. path: 'test/:name?',
  6. name: 'test',
  7. component: 'test.vue',
  8. props: true,
  9. },

参考文章: https://www.jianshu.com/p/2be6f131cec5?tdsourcetag=s_pcqq_aiomsg (这一篇写得还不错,可以看看)

2.js设置容器高度

情景介绍:这是个商品列表页,我用了better-scroll来滚动列表内容。html代码结构如下:

  1. <div class="scroll-wrapper" ref="listScroll" :style="scrollWrapperStyle">
  2. <ul class="list-ul">
  3. <li>
  4. <!-- ... -->
  5. </li>
  6. </ul>
  7. </div>

容器(scroll-wrapper)高度默认和里面的内容(list-ul)一样高,这可不行,这就没法触发better-scroll滚动。

我需要给容器(scroll-wrapper)一个固定高度,除去顶部header的高度,剩下的高度都要给它。。这就需要动态检测设备高度了

js部分代码如下:

  1. data() {
  2. return {
  3. scrollWrapperStyle: {
  4. height: (window.screen.height - 50) + 'px'
  5. }
  6. }
  7. },

3.其他好像没啥问题。

4.今天顺利地开发了很多东西。

vue路由也整明白了。vue电商项目,完成了分类页、列表页、详情页。

项目github地址:https://github.com/2768533792/vue-ec

5.加油

每日技术总结:vue router传参方式,js获取设备高度的更多相关文章

  1. vue的传参方式和router使用技巧

    vue传参方法一 1,路由配置 { path: '/describe/:id', name: 'Describe', component: Describe } 2,使用方法 // 直接调用$rout ...

  2. vue router 传参 获取不到query,params

    千万要注意,获取query/params 是this.$route.query 不是this.$router.query!!!

  3. VUE -- router 传参和获取参数

  4. Vue Router路由导航及传参方式

    路由导航及传参方式 一.两种导航方式 ①:声明式导航 <router-link :to="..."> ②:编程式导航 router.push(...) 二.编程式导航参 ...

  5. vue路由传参的三种方式以及解决vue路由传参页面刷新参数丢失问题

    最近项目中涉及到跨页面传参数和后台进行数据交互,看到需求之后第一反应就是用路由传参来解决:Vue中给我们提供了三种路由传参方式,下面我们一个一个的来看一下: 方法一:params传参: this.$r ...

  6. Vue路由传参的几种方式

    原 Vue路由传参的几种方式 2018年07月28日 23:52:40 广积粮缓称王 阅读数 12613   前言:顾名思义,vue路由传参是指嵌套路由时父路由向子路由传递参数,否则操作无效.传参方式 ...

  7. vue路由传参的几种基本方式

    原文地址 this.$router.push跳转 现有如下场景,点击父组件的li元素跳转到子组件中,并携带参数,便于子组件获取数据.父组件中: <li v-for="article i ...

  8. vue 路由传参中刷新页面参数丢失 及传参的几种方式?

    在页面跳转中,我通过路由传参,结果发现页面参数丢失了.路径返回了根目录.... 1. 先说下路由传参的几种方式吧? 比如:<div v-for="item in items" ...

  9. $router和$route的区别,路由跳转方式name 、 path 和传参方式params 、query的区别

    一.$router和$route的区别 $router : 是路由操作对象,只写对象$route : 路由信息对象,只读对象 例子://$router操作 路由跳转 this.$router.push ...

随机推荐

  1. POJ 2111 DP+记录路径

    题意: 思路: 类似滑雪 //By SiriusRen #include <cstdio> #include <cstring> #include <algorithm& ...

  2. 平板电脑上完美体验Windows 8 (视频)

    平板电脑上完美体验Windows 8 (视频) 目前,计算机产业正面临重大变革,三网融合,云计算,物联网正加速终端产品的融合.4C融合成为终端产品的未来发展趋势,是4C融合的代表性产品,它破了传统的W ...

  3. PHP foreach遍历数组之如何判断当前值已经是数组的最后一个

    先给出foreach的两种语法格式 1,foreach (array_expression as $value) statement 2,foreach (array_expression as $k ...

  4. [lougu2243]双端队列搜索

    正统双端队列搜索 回顾:普通队列进行边权为定值的最短路 每次到达都是最优的(意味着不用取min) why? 因为所有状态按照 入队的先后顺序 具有 层次单调性,每次扩展,都往外走一步,满足从起始到该状 ...

  5. mvc定时执行任务(获取气象台的气象数据,定时新增)

    1.定时任务: gloabl.asax文件Application_Start()方法注册: System.Timers.Timer t = new System.Timers.Timer(theInt ...

  6. EasyUI——DataGrid中嵌入Radio

    前一篇博客写到项目中的广告位管理,当时没有写到今天的问题,这个问题当时也是困扰我好久. 经过自己的努力和同志们的帮助,最后最终解决. 实现要求把全部的广告位后面的单选button设成一组,目的是一个广 ...

  7. 41.C++多线程生产消费者模型

    #include <iostream> #include <thread> #include <mutex> #include <condition_vari ...

  8. JavaFx lineChart real-time Monitor

    JavaFx lineChart real-time Monitor   about memory public class EffectTest extends Application { Stac ...

  9. Win8.1恢复这台电脑里的6个文件夹

    平台:win8.1 问题:网络下载的ghost版8.1,装好后“这台电脑”里没有6个常用的文件夹. 解决:导入下列注册表项即可 Windows Registry Editor Version 5.00 ...

  10. C#与C++ DLL的交互

    C#与C++交互,总体来说可以有两种方法: 1.利用C++/CLI作为代理中间层 2.利用PInvoke实现直接调用   第一种方法:实现起来比较简单直观,并且可以实现C#调用C++所写的类,但是问题 ...