请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

使用git源码运行hbuider控制台会出现id和friendNickName获取不到的情况

你好,
我使用git上的代码在android手机上直接运行的时候,会出现以下2个问题,辛苦帮忙尽快解答一下
问题一:
1. 我首先用用户a登录,hbuider控制台不会有错误
2. 当我把a用户退出登录,此时就会如下错误: 代码时imooc-chatlist.html中的325行var chatSnapshotList = app.getUserChatSnapshot(user.id); 因为app全局变量user中信息因为已经没有用户登录,导致为空,但是我想的问的是此处为什么在退出登录后,loadingChatSnapshot();方法还在持续调用??
图片描述

  问题二:
  ![图片描述](http://img1.sycdn.imooc.com//szimg/5bcfe5fb0001e13610040099.jpg)

正在回答 回答被采纳积分+3

12回答

风间影月 2018-10-29 11:39:39

这是一个小bug,解决方案如下:

  1. 重新登录后刷新个人页面的信息,由于目前个人页面已经有自定义事件refresh,所以只需要在登录成功后刷新即可,代码如下

    https://img1.sycdn.imooc.com//szimg/5bd680920001647109150338.jpg

  2. 退出登录后一直会保持keepalive,然后报错,这个时候只需要增加全局用户判断就可,就是判断当前是否有用户,由于退出登录后,用户信息不会在缓存里,所以直接使用全局的工具类拿到用户并且判断接口,只需要相应的地方判断,代码如下:

    https://img1.sycdn.imooc.com//szimg/5bd680f6000151e509780210.jpg

0 回复 有任何疑惑可以回复我~
  • 修改之后还是会出现friendNickName获取不到的情况,退出后登录别的账号还是显示之前用户的消息列表通讯录和发现,只有个人页面是对的
    回复 有任何疑惑可以回复我~ 2022-05-07 15:54:30
提问者 Sky_YiBai 2018-10-28 13:04:09

在index.html中这部分的代码吗?怎么处理?~


// 获取当前的webview对象

var indexWebview = plus.webview.currentWebview()

// 向当前的主页webview追加子页的4张webview对象

for (var i = 0 ; i < kexinArray.length ; i ++) {

var kexinPage = plus.webview.create(kexinArray[i].pageUrl, 

kexinArray[i].pageId,

kexinStyle);

// 隐藏webview窗口

kexinPage.hide();

// 追加每一个子页面到当前主页面

indexWebview.append(kexinPage);

}

plus.webview.show(kexinArray[0].pageId);

// 批量绑定tap事件,展示不同的页面

mui(".mui-bar-tab").on("tap", "a", function() {

var tabindex = this.getAttribute("tabindex");

// 显示点击的tab选项所对应的页面

plus.webview.show(kexinArray[tabindex].pageId, "fade-in", 200);

// 隐藏其他的不需要的页面

for (var i = 0 ; i < kexinArray.length ; i ++) {

if (i != tabindex) {

plus.webview.hide(kexinArray[i].pageId, "fade-out", 200);

}

}

})

// 延时加载

setTimeout("initData()", "1000");


// 预加载

function initData() {

var kexin_chatlist = plus.webview.getWebviewById("kexin-chatlist.html");

mui.fire(kexin_chatlist, "refresh");

var kexin_me = plus.webview.getWebviewById("kexin-me.html");

mui.fire(kexin_me, "refresh");

}


0 回复 有任何疑惑可以回复我~
  • 请描述你的问题。建议去群里交流吧,这样大家都能给你意见噢,这么看代码,大多没人有耐心看的吧 :)
    回复 有任何疑惑可以回复我~ 2018-10-28 13:07:24
  • 提问者 Sky_YiBai 回复 风间影月 #2
    问题很清楚啊,我从一开始想解决的都是这样的问题: 就是A用户登出,B重新登录后,控制台有错误,我按照你说的,在用户登出代码添加页面销毁后,登录后用户页面功能还是有问题。
    回复 有任何疑惑可以回复我~ 2018-10-28 13:14:18
  • 风间影月 回复 提问者 Sky_YiBai #3
    明后天空了我看看,你可以继续学习,这不影响噢
    回复 有任何疑惑可以回复我~ 2018-10-28 13:16:16
提问者 Sky_YiBai 2018-10-28 12:04:50

好的,那辛苦老师出差回来尽快帮忙看一下吧。我看了登录代码那块儿,我理解主要是index.html、login.html和app.js,还是不太知道怎么做。

0 回复 有任何疑惑可以回复我~
  • 你这个需要数据重新渲染,把这个步骤做一下就行
    回复 有任何疑惑可以回复我~ 2018-10-28 12:05:50
提问者 Sky_YiBai 2018-10-28 11:50:27

现在的问题是,如果我登出不销毁,下次登录展示的都是前一个用户的信息。如果我销毁,下次登录的时候,页面不展示了。我是不是应该在登录成功的时候做点儿什么?

0 回复 有任何疑惑可以回复我~
  • 登录的时候刷新缓存
    回复 有任何疑惑可以回复我~ 2018-10-28 11:51:55
  • 也就是页面重写赋值
    回复 有任何疑惑可以回复我~ 2018-10-28 11:52:09
提问者 Sky_YiBai 2018-10-28 11:47:07

您好,

      还是销毁的问题,现在退出登录之后,我会把页面都销毁一下,但是用新账号登录后,新账号的所有页面都是空白的了?辛苦帮忙看看怎么解决?

     我买这个视频主要是想学习一下netty,不想在用户端这块儿纠结这么久,辛苦帮忙把这部分问题解决一下。


// 用户退出

var link_logout = document.getElementById("link_logout");

link_logout.addEventListener("tap", function(){

app.userLogout();

mui.openWindow("login.html", "login.html");

// 销毁之前的所有页面

plus.webview.close("kexin-chatlist.html");

plus.webview.close("kexin-contact.html");

plus.webview.close("kexin-discover.html");

//plus.webview.close("kexin-me.html");

});


0 回复 有任何疑惑可以回复我~
  • 这几天在外出差,过两天回去看看
    回复 有任何疑惑可以回复我~ 2018-10-28 11:50:00
  • 你可以继续往下学习,这个不影响的
    回复 有任何疑惑可以回复我~ 2018-10-28 11:50:22
提问者 Sky_YiBai 2018-10-24 12:45:24

再问一个问题:

a用户登出后,b用户登录,默认进入我的页面,信息还是a的?

0 回复 有任何疑惑可以回复我~
  • 页面没刷新,销毁后,并且设置默认打开页面进去就可以了。有些问题大家都在群里讨论过得,建议加群,大家交流会更方便哈
    回复 有任何疑惑可以回复我~ 2018-10-24 13:18:14
提问者 Sky_YiBai 2018-10-24 12:07:14

再问个问题:

如果父页面包含一个子页面,子页面中有类似的心跳或者循环调用,我直接销毁父页面,子页面也会销毁掉是吗

0 回复 有任何疑惑可以回复我~
  • 没遇到过,说不准,你可以试试
    回复 有任何疑惑可以回复我~ 2018-10-24 12:09:13
提问者 Sky_YiBai 2018-10-24 11:59:46

我的理解,我是要在退出登录的时候,可以所有页面都先销毁一下

0 回复 有任何疑惑可以回复我~
提问者 Sky_YiBai 2018-10-24 11:58:07

// 用户退出

var link_logout = document.getElementById("link_logout");

link_logout.addEventListener("tap", function(){

app.userLogout();

mui.openWindow("login.html", "login.html");

mui.plus.webview.close("imooc-chatlist.html");

});


我看文档是这个mui.plus.webview.close("imooc-chatlist.html");?但是运行的时候还说找不到webview


0 回复 有任何疑惑可以回复我~
  • 去掉 mui. 试试
    回复 有任何疑惑可以回复我~ 2018-10-24 12:01:30
提问者 Sky_YiBai 2018-10-24 11:37:54

怎么销毁页面?~

0 回复 有任何疑惑可以回复我~
  • 你先去查一下api,看看能否通过自己去解决问题。h5 plus文档里都有。我直接告诉你答案就没意思啦,你先去找找看
    回复 有任何疑惑可以回复我~ 2018-10-24 11:39:12
提问者 Sky_YiBai 2018-10-24 11:35:57

https://img1.sycdn.imooc.com//szimg/5bcfe8920001e13610040099.jpg

那这个问题呢?

0 回复 有任何疑惑可以回复我~
  • 同一个方法的啊,页面销毁了就ok了
    回复 有任何疑惑可以回复我~ 2018-10-24 11:37:08
风间影月 2018-10-24 11:33:14

这是一个心跳,用户退出了,清除了缓存,但是页面没有销毁,这是个小bug,退出的时候销毁页面即可。

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信