Vue + Vue-router 同名路由切换数据不更新的方法
在默认情况下, 同名路由之间的切换, 由于组件可以服用, 放在ready里获取数据, 是不会执行的, 有两种方法可以解决
注意: 该问题仅存在于 vue1
方法1: 将数据获取放到route.data下~
route: { data({to: {params: { page }}}) { return Promise.all([ this.getApi() ]).then(() => { }) } }
方法2: 设置route.canReuse = false, 强制组件不复用~
route: { canReuse() { return false } }, ready() { var request = $.ajax({ type: "POST", dataType: 'json', url: "api.php" }); request.then((json) => { // balabala }); }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
相关推荐
-
详解vue2路由vue-router配置(懒加载)
vue路由配置以及按需加载模块配置 1.首先在component文件目录下写俩组件: First.vue: <template> <div>我是第一个页面</div> </template> <script> export default { name: 'first', data () { return { msg: 'Welcome to Your Vue.js App' } } } </script> <!-- Add &
-
vue-router:嵌套路由的使用方法
模板抽离 我们已经学习过了Vue模板的另外定义形式,使用<template></template>. <!-- 模板抽离出来 --> <template id="home"> <div>首页</div> </template> <template id="news"> <div>新闻</div> </template> 然后js里定义路
-
Vue.js路由组件vue-router使用方法详解
使用Vue.js + vue-router 创建单页应用是非常简单的.只需要配置组件和路由映射,然后告诉 vue-router 在哪里渲染即可. 一.普通方式基本例子: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>vue-router使用方法</title> </head> <bod
-
Vue+axios 实现http拦截及路由拦截实例
现如今,每个前端对于Vue都不会陌生,Vue框架是如今最流行的前端框架之一,其势头直追react.最近我用vue做了一个项目,下面便是我从中取得的一点收获. 基于现在用vue+webpack搭建项目的文档已经有很多了,我就不再累述了. 技术栈 vue2.0 vue-router axios 拦截器 首先我们要明白设置拦截器的目的是什么,当我们需要统一处理http请求和响应时我们通过设置拦截器处理方便很多. 这个项目我引入了element ui框架,所以我是结合element中loading和me
-
vue使用watch 观察路由变化,重新获取内容
问题背景: 点击用户头像 => 进入用户个人中心,在用户个人中心里点击其他用户的头像,我希望显示被点击用户的个人中心,但只看到了路由参数在发生变化,页面内容并没有更新.如图: 页面代码如下: <script> export default { data() { return { data: {} } }, methods: { fetchDate() { // 使用 axios获取数据 ...... }, created() { this.fetchDate(); } } </sc
-
VueJs路由跳转——vue-router的使用详解
对于单页应用,官方提供了vue-router进行路由跳转的处理,本篇主要也是基于其官方文档写作而成. 安装 基于传统,我更喜欢采用npm包的形式进行安装. npm install vue-router --save 当然,官方采用了多种方式进行安装,包括bower,cdn等. 基本用法 在HTML文档中使用,只需要利用v-link这个directive就行了,如: <a v-link="{path: '/view-a'}">Go to view-a</a> p
-
vue-router路由简单案例介绍
官方文档: 旧版:https://github.com/vuejs/vue-router/tree/1.0/docs/zh-cn 新版:http://router.vuejs.org/(2.0版本) 此文是旧版 文件结构图: 基本用法: <router-view>是一个顶级的路由外链,用于渲染匹配的组件. 例如:我的应用入口是app.vue 那么在app.vue中添加如下代码, 此处涉及ES6. app.vue <template> <div class='page inde
-
详解vue嵌套路由-params传递参数
在嵌套路由中,父路由向子路由传值除了query外,还有params,params传值有两种情况,一种是值在url中显示,另外一种是值不显示在url中. 1.显示在url中 index.html <div id="app"> <!-- router-view 路由出口, 路由匹配到的组件将渲染在这里 --> <router-view></router-view> </div> main.js params传值是通过 :[参数值]
-
Vue + Vue-router 同名路由切换数据不更新的方法
在默认情况下, 同名路由之间的切换, 由于组件可以服用, 放在ready里获取数据, 是不会执行的, 有两种方法可以解决 注意: 该问题仅存在于 vue1 方法1: 将数据获取放到route.data下~ route: { data({to: {params: { page }}}) { return Promise.all([ this.getApi() ]).then(() => { }) } } 方法2: 设置route.canReuse = false, 强制组件不复用~ route:
-
vue.js Router嵌套路由
前言: 有时候在路由中,主要的部分是相同的,但是下面可能是不同的.比如访问首页,里面有新闻类的/home/news,还有信息类的/home/message.这时候就需要使用到嵌套路由. 项目结构如下: 我们创建了3个组件,分别是Home.vue,HomeNews.vue,HomeMessage.vue,代码如下: Home.vue <template> <div class="home"> <h1>Home</h1> <router
-
vue项目退出登录清除store数据的三种方法
目录 方法一:(不友好,页面会白屏,不推荐使用) 方法二 : (不会出现白屏,推荐使用) 方法三 : vuex清除token (不会出现白屏,推荐使用) 总结 方法一:(不友好,页面会白屏,不推荐使用) 在退出登录的loginOut 方法里面: window.location.reload() 方法二 : (不会出现白屏,推荐使用) 利用v-if控制router-view,在根组件APP.vue中实现一个刷新方法 <template> <router-view v-if="is
-
vue 刷新之后 嵌套路由不变 重新渲染页面的方法
解决嵌套路由刷新时,路由没有变化,正常情况下页面是不会重新渲染的 1.在router-view中加上条件渲染 v-if 默认为true.让它显示出来 2.写写一个reload方法,在页面刷新只有,点击某个查询条件的时候调用这个重载的方法 这是条件渲染变化了为false 在修改数据之后使用 $nextTick, 条件渲染变化了为true 则可以在回调中获取更新后的 DOM 如果需要带有查询参数,可以用编程试导航,query来传参,但是这种方式可能刷新之后会有问题. 我的解决方法是在刷新之后点击页面
-
vue根据进入的路由进行原路返回的方法
情景: a---------->c 点击返回,希望返回到a b---------->c 点击返回,希望返回到b 解决方案: a页面,加from字段 PubSub.subscribe('table-view', function(msg, args) { var rowData = args[0], rowIndex = args[1]; //跳转详情页 this.$router.push({ name: 'viewAdvertiseDetails', query: { id: this.$ro
-
Vue.js 通过jQuery ajax获取数据实现更新后重新渲染页面的方法
1. 引入jquery和vue.js <script type="text/javascript" src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script> <script type="text/javascript" src="http://cdn.bootcss.com/vue/2.2.2/vue.min.js"
-
vue中data改变后让视图同步更新的方法
前言 不久前天看到一个比较有趣的问题,vue中data改变后,如何让视图同步更新,搜索了一下,并没有发现解决问题的方法,只能从源码去找解决方法了. 原因 我们都知道,在vue中改变数据后,视图并不是同步更新的. 在vue实例初始化后,会将data设置为响应式对象,当我们执行this.xxx = 1时,会触发这个响应式对象的setter.在setter中,会触发更新,通知所有订阅了xxx的订阅者.但是这个触发更新并不是同步的,它会将所有的watcher都添加到一个队列,并在nextTick之后去更
-
Vue路由切换页面不更新问题解决方案
前言:vue-router的切换不同于传统的页面的切换.路由之间的切换,其实就是组件之间的切换,不是真正的页面切换.这也会导致一个问题,就是引用相同组件的时候,会导致该组件无法更新,也就是我们口中的页面无法更新的问题了. 一.问题呈现 在路由中进行切换结果 这时候会发现input标签的value值并没有随着路由的改变而改变.并没有更新 二.解决方案① 给<router-view :key="key"></router-view>增加一个不同:key值,这样vue
-
vue2.0路由切换后页面滚动位置不变BUG的解决方法
最近项目中遇到这样一个问题,vue切换路由,页面到顶端的滚动距离仍会保持不变. <a href="javascript:;" rel="external nofollow" class="btn btn01" @click="useRightNow">立即试用</a> <router-link class="db" to="/user">个人中心<
-
vue跳转同一个路由参数不同的问题
目录 vue跳转同一个路由参数不同 问题 第一种方法 第二种方法 vue跳转同一路由报错 原因 解决方案 vue跳转同一个路由参数不同 问题 vue项目同一个路由跳转(路由不变,后面参数变化),第一次碰到这个问题的时候,搜了很多文章,大约是第一种解决方案,很顺利解决了. 可是!!!在app上的时候,它地址变了刷新不了!! 第一种方法 window.location.href = 改变参数后的新地址 window.location.reload(); 在app上地址更新但是不刷新!!!然后就有了第
随机推荐
- 实例讲解Java的Spring框架中的控制反转和依赖注入
- Javascript的表单验证-初识正则表达式
- PHP去掉json字符串中的反斜杠\及去掉双引号前的反斜杠
- 使用jQuery向asp.net Mvc传递复杂json数据-ModelBinder篇
- 伯乐asp收信程序漏洞及利用程序利用代码
- ORACLE 正则解决初使化数据格式不一致
- Asp.net中Microsoft.Identity的IPasswordHasher加密的默认实现与运用
- PHP中常用的转义函数
- php实现仿写CodeIgniter的购物车类
- Javascript核心读书有感之语句
- linux下的tar命令详细解释
- jsp中使用frameset框架 边框固定不让更改边框的大小
- javascript定义变量时有var和没有var的区别探讨
- mysql中coalesce()的使用技巧小结
- Android全屏设置的方法总结
- MySQL redo死锁问题排查及解决过程分析
- Android中制作进度框和环形进度条的简单实例分享
- C# Resources资源详解
- 算法之排列算法与组合算法详解
- C语言中实现itoa函数的实例