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

QQ登录

只需一步,快速开始

查看: 2096|回复: 9

[结贴] 路由url未更新如何处理!

[复制链接]

64

主题

321

帖子

679

积分

高级会员

Rank: 4

积分
679
QQ
发表于 2017-3-13 09:19:09 | 显示全部楼层 |阅读模式
在main.w页面使用windowcontainer嵌入了infolist.w,和infodetail.w页面。
在infolist.w页面的list中写了点击事件如下:
  1.         Model.prototype.infoview = function(event){
  2. //                debugger;
  3.                 var id = event.bindingContext.$object.val('info_id');
  4.                 var url = require.toUrl('./infodetail.w');
  5.                 var params = {data:{info_id:id}};                                                                                       
  6.                 this.getParentModel().comp('windowContainer4').refresh(url,params);       
复制代码

在infodetail.w页面是基于url做的分享,在第一次的时候info_id可以反映在url上,分享是正确的,但是如果用户后退后点击list中数据时url就不会更新了,虽然infodetail.w接收了正确的参数显示了正确的数据,但是分享出去的url还是第一个info_id。那个container用load和refresh都不行,不成功,请指点!
发表于 2017-3-13 15:05:55 | 显示全部楼层
为什么要搞这么复杂??放置两个windowcontainer 呢??
直接使用contents组件,做两个页面的切换不就可以了吗??用不着这么复杂的吧!!

还有就是windowContainer.load 方法就能刷新了,不需要调用refresh

如果想要分享出去的URL中也带上参数!那就使用URL传参或,简单参数传递的方式
你参考下:http://docs.wex5.com/page-interaction/
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

64

主题

321

帖子

679

积分

高级会员

Rank: 4

积分
679
QQ
 楼主| 发表于 2017-3-13 15:25:28 | 显示全部楼层
liangyongfei 发表于 2017-3-13 15:05
为什么要搞这么复杂??放置两个windowcontainer 呢??
直接使用contents组件,做两个页面的切换不就可以 ...

http://bbs.wex5.com/forum.php?mod=viewthread&tid=116539&extra=
之前的这个帖子,params的参数也是进入url的,而且页面可以接受,刷新数据也是正常的,就是url的params参数不会变化,按理来应该每次前端路由都应该更新成新的参数呀!
回复 支持 反对

使用道具 举报

64

主题

321

帖子

679

积分

高级会员

Rank: 4

积分
679
QQ
 楼主| 发表于 2017-3-13 15:54:57 | 显示全部楼层
liangyongfei 发表于 2017-3-13 15:05
为什么要搞这么复杂??放置两个windowcontainer 呢??
直接使用contents组件,做两个页面的切换不就可以 ...
  1.                 var id = event.bindingContext.$object.val('info_id');
  2.                 var url = require.toUrl('./infodetail.w?info_id='+id);
  3.                 this.getParentModel().comp('windowContainer4').load(url);
  4.                 this.getParentModel().comp('contents').to('infodetailcontent');
复制代码

改成这样url的?参数还是一样,页面里参数接收正常,数据刷新也正常,就是url还是一样的,不会变!这个可能的却有问题,请测试!
回复 支持 反对

使用道具 举报

发表于 2017-3-13 17:25:17 | 显示全部楼层
ufo1982ufo 发表于 2017-3-13 15:54
改成这样url的?参数还是一样,页面里参数接收正常,数据刷新也正常,就是url还是一样的,不会变!这个 ...

windowContainer 的autoLoad 属性设置为 true 开启路由!调用的时候URL 就会变化!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

64

主题

321

帖子

679

积分

高级会员

Rank: 4

积分
679
QQ
 楼主| 发表于 2017-3-13 17:38:00 | 显示全部楼层
本帖最后由 ufo1982ufo 于 2017-3-13 17:45 编辑
liangyongfei 发表于 2017-3-13 17:25
windowContainer 的autoLoad 属性设置为 true 开启路由!调用的时候URL 就会变化!

routable我是设置为true的,我觉得应该有变化才对,首次点击有变化,后面点击是不会变的(换成?参数传参第二次点击也是不会变!)!是不是我的组件坏了?
http://489b6aaa.ap.ngrok.io/
回复 支持 反对

使用道具 举报

发表于 2017-3-13 18:25:10 | 显示全部楼层
ufo1982ufo 发表于 2017-3-13 17:38
routable我是设置为true的,我觉得应该有变化才对,首次点击有变化,后面点击是不会变的(换成?参数传参 ...

本地测试没问题
案例:/UI2/demo/page/interactive/page.w
将第一个windowContainer的routable属性设置为true

然后再添加一个button ,里面写代码
  1.         Model.prototype.button2Click = function(event){
  2.                
  3.                 var url = require.toUrl("./page3.w?p1=p1ValueNewaaa&p2=p2NewValueNewaaa");
  4.                 var params = {
  5.                         a1: "a1ValueNewaaa",
  6.                         a2: 20,
  7.                         data: {
  8.                                 d1: "d1ValueNewaaa",
  9.                                 d2: "d2ValueNew"
  10.                         }
  11.                 }
  12.                 this.comp("windowContainer1").load(url, params);
  13.        
  14.         };
复制代码


对比第一个button 的方法button8Click

另个button依次点击的时候!将URL地址复制出来!对比下!参数肯定每次都是变化的!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

64

主题

321

帖子

679

积分

高级会员

Rank: 4

积分
679
QQ
 楼主| 发表于 2017-3-13 19:40:29 | 显示全部楼层
liangyongfei 发表于 2017-3-13 18:25
本地测试没问题
案例:/UI2/demo/page/interactive/page.w
将第一个windowContainer的routable属性设置为 ...

的却是这样的,我重新写了用2个windowcontainer之间通过父级main调用都是会变化的,这就是我要的效果。
问题是我没有做过其他的设置啊,代码也正常,项目文件中的就是不会变,麻烦梁老师分析下还有什么可能的原因导致这个url路由失效!实在是没有头绪!
回复 支持 反对

使用道具 举报

发表于 2017-3-14 09:39:39 | 显示全部楼层
ufo1982ufo 发表于 2017-3-13 19:40
的却是这样的,我重新写了用2个windowcontainer之间通过父级main调用都是会变化的,这就是我要的效果。
...

你是执行的load() 方法把!!
你再试试吧,
在我看来,只要windowcontainer的autoLoad 设置为true 即可!

你可以先试试只用一个windowcontainer 测试下!一个生效后,再添加另一个
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

64

主题

321

帖子

679

积分

高级会员

Rank: 4

积分
679
QQ
 楼主| 发表于 2017-3-15 09:00:29 | 显示全部楼层
liangyongfei 发表于 2017-3-14 09:39
你是执行的load() 方法把!!
你再试试吧,
在我看来,只要windowcontainer的autoLoad 设置为true 即可! ...

上次调试代码的时候我动态指定了routable属性,结果没有删除代码就出现这样的问题了!谢谢,请结贴!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-4 04:33 , Processed in 0.065858 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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