起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2026|回复: 1

[处理中3] localStorage使用的问题!!!

[复制链接]

34

主题

93

帖子

319

积分

中级会员

Rank: 3Rank: 3

积分
319
QQ
发表于 2017-12-18 01:54:29 | 显示全部楼层 |阅读模式
根据网易案例,自己开发 城市选择相关的页面
1、进入APP首页就会判断,是否选择了 小区,如果选择,就根据小区 ID 加载相关数据
2、如果没有选择,就跳转选择页面,点击选择小区后 会把小区ID 储存到本地localStorage,其他页面直接调用


现在的问题是,第一次的选择,正常,但是切换就不行了,每次切换了小区,浏览器观察localStorage里的key 值 会改变
但是justep.Shell.shequ.get(); 调用的 不会改变,需要刷新页面才会改变
不知道该怎么解决,是刷新页面  不是刷新data  因为储存在localStorage,的,


下面是index.w页面中 绑定的监控对象
        Model.prototype.modelLoad = function(event) {
                justep.Shell.userid = justep.Bind.observable();
                justep.Shell.username = justep.Bind.observable();
                justep.Shell.chengshi = justep.Bind.observable();//城市
                justep.Shell.diqu = justep.Bind.observable();//地区
                justep.Shell.shequ = justep.Bind.observable();//小区
                var cityLocal = (localStorage.getItem("cityUUID") && JSON.parse(localStorage.getItem("cityUUID"))) || null;
                var userLocal = (localStorage.getItem("userUUID") && JSON.parse(localStorage.getItem("userUUID"))) || null;
                if (cityLocal) {
                        justep.Shell.chengshi.set(cityLocal.chengshi || "UNKNOWN");//城市
                        justep.Shell.diqu.set(cityLocal.diqu || "UNKNOWN");//地区
                        justep.Shell.shequ.set(cityLocal.shequ || "UNKNOWN");//小区
                       
                } else {
                }
                if (userLocal) {
                        justep.Shell.userid.set(userLocal.userid || "UNKNOWN");//用户ID
                        justep.Shell.username.set(userLocal.username || "UNKNOWN");用户昵称
                } else {
                }
        };


在 list.w 页面中使用下面的方法判断,是否选择了小区,如果有就显示,没有就跳转到选择的页面
        Model.prototype.shequ = function(event){
                if (!justep.Shell.shequ.get()) {//非空判断
                        return justep.Shell.shequ.get();
                } else {
                        justep.Shell.showPage("cityclass");//跳转选择页面
                }
        };

设置了一个 button 按钮,用于切换小区选择,代码如下
        Model.prototype.CityClick = function(event){
           localStorage.removeItem("cityUUID");//清楚 localStorage
       justep.Shell.showPage("cityclass");//跳转到选择页面
        };

选择完成后,储存在localStorage,关闭当前页面
        Model.prototype.li3Click = function(event){
          var row = event.bindingContext.$object;
          var city = {};
                  city.chengshi = row.val('chengshiid');
                  city.diqu = row.val('diquid');
                  city.shequ = row.val('id');
                  localStorage.setItem("cityUUID", JSON.stringify(city));
         this.close();
        };

发表于 2017-12-18 13:43:53 | 显示全部楼层
要保证 localStorage 数据和  ko对象数据的一致性。
调用  localStorage.setItem("cityUUID", JSON.stringify(city));方法后,应该再次调用  
  justep.Shell.shequ.set( city.shequ )
修改ko对象的值重新赋值才对!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-5-2 07:28 , Processed in 0.110376 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表