vue 项目使用经验
来源:互联网 发布:女童长裤春秋淘宝网 编辑:程序博客网 时间:2024/05/29 08:22
1、路由组件上请求的绑定
一般从一个路由跳转到并一个,这种都绑定在route activate 方法上。
如果路由有参数:id 当在路由上直接修改参数回车?发现内容并未改变。再回车就刷新页面了,这时才加载请求。
相当于修改了参数后需要f5刷新才能显示。绑定在ready上也一样。它用于初始化组件时用,对于修改参数时并没有初始化所以无法。
解决修改路由参数触发请求事件--解决:
在初始化或勾子上绑定初始化请求。watch 监听$route.params 路由参数变化,并调用请求方法。这样在路由定义的参数修改了。就会触发请求。
这只是我的解决。
----路由分析
在当前路由上直接修改参数是不会有变化的。因为路由没变。当切换了路由如当前在detail 下切换到了list下再从列表链接切换到了detail并改变了参数。
这时路由会执行勾子函数,但是ready不一定会执行。因为route-view 配置了keep-alive 缓存时,detail在第一次时会执行ready,之后就不会执行了。
除非刷新页面。但是路由切换时勾子会执行。因为路由发生了本质变化 了,而不只是参数变化 。
所以一般意见绑定在勾子上。
2、子路由参数切换时保存当前参数状态下的搜索数据。
如上图,在此路由状态下,有三个分类,下边分类列表和搜索。
我把列表搜索这块做成了子路由subRoutes 下定义。当点击分类时切换子路由显示数据。
这用到了1里的监听路由params。
但是这里还有一个问题,就是每个列表的搜索状态。当在1分类下搜索了,切换到2分类下时1的搜索数据还在,汗。
这是因为切换并没有重新加载子路由而是,监听params触发的请求更新的数据。而search搜索对象并没有改变。
所以切换时搜索状态是公用的。
解决思路:
search对象存储当前的状态,在searchs里存储所有状态的search对象。当切换时从searchs里读取typeid 的search对象,赋值给search。
因为分类是动态的,所以需要一个Initsearch存储初始对象。当运行时判断searchs 里是否有typeid的对象,没有initsearch 赋值添加到searchs,并赋值给search。
有呢从searchs里取出来赋值给search对象。当在本参数下操作时也就是search变化时需要保存到searchs里。
if(this.$route.params.type==undefined){return ;}var newids=this.$route.params.type+'_'+this.$route.params.id;if(this.ids==newids){//console.log('==')var obj=Object.assign({},this.search)var s=Object.assign({},this.searchs) s[this.ids]=obj; this.$set('searchs',s);}else{this.ids=newids;if(this.searchs[this.ids]){ var obj=Object.assign({},this.searchs[this.ids]); console.log(this.ids,'----',obj) this.search=obj; }else{ var obj=Object.assign({},this.initsearch) var s=Object.assign({},this.searchs) s[this.ids]=obj; //console.log('s----',s); this.$set('searchs',s); this.search=obj; }}//this.ids=this.$route.params.type+'_'+this.$route.params.id; // console.log(this.searchs)if(casetxt){ if( casetxt=='search' && this.search.searchtxt.length==''){ return ; } this.search.page=1; } this.search.type=this.$route.params.id;
//以上是ajax
3、socket.io 本地websocket 和mockjs 冲突。
mockjs 在页面里会拦截ajax请求,而socket.io 模块本地链接用的是http而不是ws方式。
所以socket的请求也会被拦截修改。无法实现。
解决方法是把mock放在node 服务端,在express 的get post 里用创建mock并用res.send返回json
var s=Mock.mock({'data|5-8':[{'id|+1':1,'title':"@csentence(20)"}],'totalPages|2-5':0,'errorCode':0});res.send(s);
- vue 项目使用经验
- 初次使用vue写项目的一些经验
- Vue使用经验小结
- 使用vue项目感悟
- vue 项目 使用sass
- vue 项目 使用sass
- 使用vue-cli脚手架搭建vue项目
- 使用vue-cli搭建vue项目完整版
- 使用Vue项目实践手记
- vue项目中使用jQuery
- vue项目中使用ueditor
- vue项目中使用echarts
- 使用 vue-cli 搭建项目
- 使用 vue-cli 搭建项目
- 使用 vue-cli 搭建项目
- 使用Vue-cli创建项目
- vue项目中使用sass
- Vue 项目里使用Sass
- 资治通鉴-6 听的智慧
- lucene创建索引并搜索mysql数据库
- javascript函数闭包
- Neural style之torch学习笔记3:神经网络包的用法(1)
- BootStrap插件实现分页效果
- vue 项目使用经验
- 参加ThoughtWorks公司培训心得
- 一个组织中的权利类型
- UWP C++_CX开荒记 第二回 设计框架
- 欢迎使用CSDN-markdown编辑器
- SlidingMenu 侧滑菜单
- cookie实例
- PHP中MongoDB数据库的连接、添加、修改、查询、删除等操作实例
- DAO设计模式---初步实现