vue+localStorage+收藏+解析url参数 实例解析
来源:互联网 发布:blufftitler网络模板 编辑:程序博客网 时间:2024/06/05 10:32
以商家收藏
这一功能为例:
1. 首先App.vue中根据url 设置好 商家的id
<script>import {urlParse} from './common/js/util.js'import Header from './components/header/Header.vue'const err_OK = 0;export default{ data(){ return { /* 商家默认有id */ seller:{ id:(()=>{ /* 从地址栏中的url中通过urlParam函数解析,得到id */ let queryParam = urlParse(); console.log(queryParam); return queryParam.id; })() } } }, created(){ this.$http.get('./api/seller?id='+this.seller.id).then((res)=>{ var resData = res.data; if(resData.errno === err_OK){ /* this.seller = resData.data; 会覆盖掉id */ /* 防止把id覆盖掉,使用es6的一个语法:扩展了对象的属性,在原来的基础上添加response.data的值,不会覆盖掉原来的id属性 */ this.seller = Object.assign({},this.seller,resData.data); console.log(this.seller.id); } },(res)=>{ alert(res.status); }); }, components: { 'v-header': Header }}</script>
2、seller.vue: 设置和读取localstorage
<div class="favorite" @click="toggleFavorite($event)"> <span class="icon icon-favorite" :class="{'active':favorite}"></span> <div class="text">{{favoriteText}}</div></div>----import {saveToLocal,loadFromLocal} from '../../common/js/store.js'export default{ props:{ seller: { type: Object } }, data(){ return{ favorite: (()=>{ return loadFromLocal(this.seller.id,'favorite',false); })() } }, computed:{ favoriteText(){ return this.favorite? '已收藏': '收藏'; } }, methods:{ toggleFavorite(event){ if(!event._constructed){ return; } this.favorite = !this.favorite; saveToLocal(this.seller.id, 'favorite', this.favorite); } }}
3、保存的读取localStorage的接口—-store.js:
/** * [保存数据到localstorage] * @param {[Number]} id [商家id] * @param {[type]} key [属性值] * @param {[type]} value [value值] * @return {[type]} [description] */export function saveToLocal(id, key, value) { let seller = window.localStorage.__seller__; if (!seller) { seller = {}; seller[id] = {}; } else { seller = JSON.parse(seller); if (!seller[id]) { seller[id] = {}; } } seller[id][key] = value; window.localStorage.__seller__ = JSON.stringify(seller);};/** * [从localstorage读取数据] * @param {[Number]} id [商家id] * @param {[type]} key [属性值] * @param {[type]} def [属性值的默认取值,当没有保存key时,返回默认值] * @return {[type]} [属性值对应的value值] */export function loadFromLocal(id, key, def) { let seller = window.localStorage.__seller__; if(!seller){ return def; } seller = JSON.parse(seller); if(!seller[id]){ return def; } let ret = seller[id][key]; return ret || def;}
4.util.js:
/** * [解析url参数] * @example ?id=12345&a=1 * @return Object {id:12345,a:1} */export function urlParse(){ let url = decodeURIComponent(window.location.search); let obj = {}; let reg = /[?&][^?&]+=[^?&]+/g; //['?id=12345','a=1'] let arr = url.match(reg); if(arr){ arr.forEach((item)=>{ let tempArr = item.substring(1).split('='); let key = decodeURIComponent(tempArr[0]); let value = decodeURIComponent(tempArr[1]); obj[key] = value; }) } return obj;}
阅读全文
0 0
- vue+localStorage+收藏+解析url参数 实例解析
- vue路由\导航刷新后:ative\localStorage\url截取参数
- js解析url参数
- URL 参数解析
- JavaScript解析URL参数
- javascript 解析 url 参数
- 解析URL参数
- 解析url获取参数
- 百度URL参数解析
- 解析url参数
- URL参数解析
- URL参数解析
- url参数分割解析
- 解析url参数
- NodeJS解析url参数
- Url参数解析
- 解析URL中的参数
- 解析url中的参数
- Android自定义ViewGroup的OnMeasure和onLayout详解
- 文章标题
- spring动态数据源
- linux清理内存命令
- DAY1 python小白学习NOTE
- vue+localStorage+收藏+解析url参数 实例解析
- 关于linux下读取文件路径出错的问题(win10 & docker)
- 这也是快乐
- JavaScript中for和for in在遍历使用getElementsByName()获取的数组时的小区别
- 查看Linux下*.a库文件中文件、函数、变量等情况
- 回顾Hibernate---配置篇
- AFNetworking批量上传图片问题
- STL之算法
- 新导入java项目报错