vue从入门到精通之进阶篇(一)vue-router:导航守卫

vue-router的导航守卫之在导航完成后获取数据

需求:在导航完成之后加载数据。渲染DOM

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title></title>
</head>
<body><div id="app"></div><script type="text/javascript" src="vue.js"></script><script type="text/javascript" src="vue-router.js"></script><script type="text/javascript" src="axios.js"></script><script type="text/javascript">// 导航完成后获取数据,这让我们有机会在数据获取期间展示一个 loading 状态,还可以在不同视图间展示不同的 loading 状态。var Index = {template:`<div>我是首页</div>`};var Post = {data(){return {loading:false,error:null,post:null}},template:`<div><div class = 'loading' v-if = 'loading'>loading.....</div><div v-if="error" class = 'error'>{{error}}</div><div class = 'content' v-if = 'post'><h2>{{post.title}}</h2><p>{{post.body}}</p></div></div>`,created(){// 组件创建完成后获取数据// 此时data已经被监听了this.fetchData();},watch:{'$route':'fetchData'},methods:{fetchData(){this.error = null;this.post = null;this.loading = true;this.$axios.get('http://127.0.0.1:8888/post').then(res=>{this.loading = false;console.log(res.data);this.post = res.data;}).catch(err=>{this.err = err.toString();})}}}var router = new VueRouter({routes:[{path:'/index',name:'index',component:Index},{path:'/post',name:'post',component:Post}]});var App = {template:`<div><router-link :to = "{name:'index'}">首页</router-link><router-link :to = "{name:'post'}">我的博客</router-link><router-view></router-view></div>`};Vue.prototype.$axios  = axios;new Vue({el:"#app",data:{},components:{App},template:`<App />`,router});</script>
</body>
</html>

vue-router的导航守卫之导航完成之前获取数据

需求:在导航完成之前获取数据,之后再渲染DOM

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><title></title>
</head><body><div id="app"></div><script type="text/javascript" src="vue.js"></script><script type="text/javascript" src="vue-router.js"></script><script type="text/javascript" src="axios.js"></script><script type="text/javascript">// 导航完成后获取数据,这让我们有机会在数据获取期间展示一个 loading 状态,还可以在不同视图间展示不同的 loading 状态。var vm = null;var User = {data() {return {error: null,user: ''}},template: `<div><div v-if="error" class = 'error'>{{error}}</div><div class = 'user' v-if = 'user'><h2>{{user}}</h2></div></div>`,beforeRouteEnter(to, from, next) {// 在渲染该组件的对应路由被 confirm 前调用// 不!能!获取组件实例 `this`// 因为当守卫执行前,组件实例还没被创建console.log(to);axios.get(`http://127.0.0.1:8888/user/${to.params.id}`).then(res => {next(vm => vm.setData(res.data))}).catch(err => {console.log(err);next(vm => vm.setError(err));})},beforeRouteUpdate(to, from, next) {// 在当前路由改变,但是该组件被复用时调用// 举例来说,对于一个带有动态参数的路径 /foo/:id,在 /foo/1 和 /foo/2 之间跳转的时候,// 由于会渲染同样的 Foo 组件,因此组件实例会被复用。而这个钩子就会在这个情况下被调用。// 可以访问组件实例 `this`this.user = null;this.$axios.get(`http://127.0.0.1:8888/user/${to.params.id}`).then(res => {this.setData(res.data);next();}).catch(err => {this.setError(err);next();})},methods: {setData(user) {this.$nextTick(() => {this.user = user;})},setError(err) {this.err = err.toString();}}}var router = new VueRouter({routes: [{path: '/user/:id',name: 'user',component: User,}]});var App = {template: `<div><router-link :to = "{name:'user',params:{id:1}}">我的用户1</router-link><router-link :to = "{name:'user',params:{id:2}}">我的用户2</router-link><router-view></router-view></div>`};Vue.prototype.$axios = axios;vm = new Vue({el: "#app",data: {},components: {App},template: `<App />`,router});</script>
</body></html>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/249244.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Unity 新手入门 如何理解协程 IEnumerator yield

Unity 新手入门 如何理解协程 IEnumerator 本文包含两个部分&#xff0c;前半部分是通俗解释一下Unity中的协程&#xff0c;后半部分讲讲C#的IEnumerator迭代器 协程是什么&#xff0c;能干什么&#xff1f; 为了能通俗的解释&#xff0c;我们先用一个简单的例子来看看协程可以…

百万级数据库优化方案

一、百万级数据库优化方案 1.对查询进行优化&#xff0c;要尽量避免全表扫描&#xff0c;首先应考虑在 where 及 order by 涉及的列上建立索引。 2.应尽量避免在 where 子句中对字段进行 null 值判断&#xff0c;否则将导致引擎放弃使用索引而进行全表扫描&#xff0c;如&#…

vue从入门到精通之进阶篇(二)组件通信:兄弟组件通信

$emit和$on进行组件之间的传值 注意&#xff1a;emit和emit和emit和on的事件必须在一个公共的实例上&#xff0c;才能够触发 需求&#xff1a; ​ 1.有A&#xff0c;B&#xff0c;C三个组件&#xff0c;同时挂载到入口组件中 ​ 2.将A组件中的数据传递到C组件&#xff0c;再将…

树结构的性质

非空树的结点总数等于树种所有结点的度之和加 1度为 K 的非空树的第 i 层最多有 ki-1 个结点(i > 1)深度为 h 的 k 叉树最多有(kh - 1)/(k - 1)个结点具有 n 个结点的 k 叉树的最小深度为 logk(n(k-1)1))

EM算法 小结

猴子吃果冻 博客园首页新随笔联系管理订阅随笔- 35 文章- 0 评论- 3 4-EM算法原理及利用EM求解GMM参数过程 1.极大似然估计 原理&#xff1a;假设在一个罐子中放着许多白球和黑球&#xff0c;并假定已经知道两种球的数目之比为1:3但是不知道那种颜色的球多。如果用放回抽样方…

Vue UI 框架对比 element VS iview

element VS iview (最近项目UI框架在选型 &#xff0c;做了个分析&#xff0c; 不带有任何利益相关&#xff09; 主要从以下几个方面来做对比 使用率&#xff08;npm 平均下载频率&#xff0c;组件数量&#xff0c;star, issue…) API风格 打包优化 与设计师友好性 1&a…

SPSS-回归分析

回归分析&#xff08;一元线性回归分析、多元线性回归分析、非线性回归分析、曲线估计、时间序列的曲线估计、含虚拟自变量的回归分析以及逻辑回归分析&#xff09; 回归分析中&#xff0c;一般首先绘制自变量和因变量间的散点图&#xff0c;然后通过数据在散点图中的分布特点选…

Python教程:Python中的for 语句

Python 中的 for 语句与你在 C 或 Pascal 中可能用到的有所不同。 Python教程 中的 for 语句并不总是对算术递增的数值进行迭代&#xff08;如同 Pascal&#xff09;&#xff0c;或是给予用户定义迭代步骤和暂停条件的能力&#xff08;如同 C&#xff09;&#xff0c;而是对任意…

二叉树的基本性质及证明

性质1&#xff1a;一棵非空二叉树的第i层上最多有2^(i-1)个结点&#xff0c;&#xff08;i>1&#xff09;。 性质2&#xff1a;一棵深度为k的二叉树中&#xff0c;最多具有2^k-1个结点&#xff0c;最少有k个结点。 性质3&#xff1a;对于一棵非空的二叉树&#xff0c;度为…

ACM10.14题解

ACM10.14题解 第一次打周赛&#xff0c;感觉还是比较紧张的&#xff0c;应该开完所有的题再做&#xff0c;而不是硬做&#xff0c;没必要硬杠英语&#xff0c;还是不要抱有侥幸心理&#xff0c;做对一定是完全理解且会&#xff0c;自己小心边界问题&#xff0c;不要瞎交。 A&am…

vscode: Visual Studio Code 常用快捷键

原文章地址&#xff1a; vscode: Visual Studio Code 常用快捷键 官方快捷键说明&#xff1a;Key Bindings for Visual Studio Code 主命令框 F1 或 CtrlShiftP: 打开命令面板。在打开的输入框内&#xff0c;可以输入任何命令&#xff0c;例如&#xff1a; 按一下 Backspace…

HTML5概要与新增标签

一、HTML5概要 1.1、为什么需要HTML5 HTML4陈旧不能满足日益发展的互联网需要&#xff0c;特别是移动互联网。为了增强浏览器功能Flash被广泛使用&#xff0c;但安全与稳定堪忧&#xff0c;不适合在移动端使用&#xff08;耗电、触摸、不开放&#xff09;。 HTML5增强了浏览器的…

Tomcat启动失败错误解决Could not publish server configuration for Tomcat v8.0 Server at localhost....

这个问题本质是我们有多个重名项目&#xff0c;为什么我们会有多个重名项目&#xff0c;其实一般都是我们删除以前的项目&#xff0c;然后再把它重新导进eclipse时以前的项目删除不彻底造成的&#xff0c;以前的项目在"Servers"里面的"server.xml"文件下的…

二叉树特性及证明

https://blog.csdn.net/jun2016425/article/details/54581407

Mock.js 和Node.js详细讲解

​​​​原文地址&#xff1a;http://www.manongjc.com/article/10503.html 《一统江湖的大前端》系列是自己的前端学习笔记&#xff0c;旨在介绍javascript在非网页开发领域的应用案例和发现各类好玩的js库&#xff0c;不定期更新。如果你对前端的理解还是写写页面绑绑事件&am…

架构图

负载均衡 分布式 转载于:https://www.cnblogs.com/jiqing9006/p/10672280.html

网络操作系统P12页答案

1.什么是网络操作系统&#xff1f;网络操作系统具有哪些基本功能&#xff1f;网络操作系统&#xff1a;专门为网络用户提供操作接口的系统软件&#xff0c;除了管理计算机的软件和硬件资源具备单机操作系统&#xff0c;并且为网络用户提供各种网络服务。当然网络操作系统不仅要…

如何将存储在MongoDB数据库中的数据导出到Excel中?

将MongoDB数据库中的数据导出到Excel中&#xff0c;只需以下几个步骤&#xff1a; &#xff08;1&#xff09;首先&#xff0c;打开MongoDB安装目录下的bin文件夹&#xff0c;&#xff08;C:\Program Files (x86)\MongoDB\Server\3.2\bin&#xff09;&#xff1b;此处视个人安装…

vue 项目初始化时,npm run dev报错解决方法

错误如下&#xff1a; npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! travel1.0.0 dev: webpack-dev-server --inline --progress --config build/webpack.dev.conf.js npm ERR! Exit status 1 npm ERR! npm ERR! Failed at the travel1.0.0 dev script. npm ERR…

JDK源码分析

https://www.jianshu.com/p/f1f1f14e7fbe