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

QQ登录

只需一步,快速开始

楼主: ufo1982ufo

[结贴] 求指导,这个框架遇到了问题!

[复制链接]

64

主题

321

帖子

679

积分

高级会员

Rank: 4

积分
679
QQ
 楼主| 发表于 2017-1-9 10:03:19 | 显示全部楼层
liangyongfei 发表于 2017-1-9 09:28
按理说不应该这样的!
if条件中,&& 表示:短路且   有一个条件返回false ,后面的条件就不会判断才对的 ...

使用了这个
  1.                 if(event !== undefined){if(event.params !== undefined){if(event.params.data !== undefined){                        //pair
  2. }}
复制代码

貌似没有问题!
回复 支持 反对

使用道具 举报

64

主题

321

帖子

679

积分

高级会员

Rank: 4

积分
679
QQ
 楼主| 发表于 2017-1-9 10:06:54 | 显示全部楼层
我在infolist.w里list组件下调父页对象,会重复加载首页,
  1. /////////////////////////////////////////////////SPA传参url
  2.         Model.prototype.infoview = function(event){
  3.                 debugger;
  4.                 var id = event.bindingContext.$object.val('info_id');
  5. //                var url = require.toUrl('./infolist.w');
  6. //                var url = require.toUrl('./infodetail.w?id='+id);
  7. //                window.location.href = url;                //通过设置window.location.href实现页面跳转
  8.                 var url = require.toUrl('./infolist.w');
  9.                 var params = {data:{id:id}};                                                                                        //xz正确的
  10.                 this.getParentModel().comp('windowContainer4').load(url,params);                //调父业windowcontainer并传参
  11.                 this.getParentModel().comp('contents').to('infodetailcontent');                //调父业contents
  12.         };
  13. /////////////////////////////////////////////////SPA传参url
复制代码

而且再加载一次的话list组件就没有数据了,也打不开container下面的infodetail.w页面!
回复 支持 反对

使用道具 举报

64

主题

321

帖子

679

积分

高级会员

Rank: 4

积分
679
QQ
 楼主| 发表于 2017-1-9 10:30:04 | 显示全部楼层
本帖最后由 ufo1982ufo 于 2017-1-9 10:43 编辑
liangyongfei 发表于 2017-1-9 09:28
按理说不应该这样的!
if条件中,&& 表示:短路且   有一个条件返回false ,后面的条件就不会判断才对的 ...
  1. /////////////////////////////////////////////////SPA传参url
  2.         Model.prototype.infoview = function(event){
  3.                 debugger;
  4.                 var id = event.bindingContext.$object.val('info_id');
  5. //                var url = require.toUrl('./infolist.w');
  6. //                var url = require.toUrl('./infodetail.w?id='+id);
  7. //                window.location.href = url;                //通过设置window.location.href实现页面跳转
  8.                 var url = require.toUrl('./infolist.w');
  9.                 var params = {data:{id:id}};                                                                                        //xz正确的
  10.                 this.getParentModel().comp('windowContainer4').load(url,params);                //调父业windowcontainer并传参
  11.                 this.getParentModel().comp('contents').to('infodetailcontent');                //调父业contents
  12.         };
  13. /////////////////////////////////////////////////SPA传参url
复制代码

加载2次首页应该是由于contens的active设置的原因。

如下的代码,会一直在首页,无法切换到对应的content。
this.getParentModel().comp('windowContainer4').load(url,params);
this.getParentModel().comp('contents').to('infodetailcontent');        

我颠倒后,会切换到对应的content,但是event.params.data就是undefined了。
this.getParentModel().comp('contents').to('infodetailcontent');        
this.getParentModel().comp('windowContainer4').load(url,params);

需要怎么改才可以带着参数切换对应的content,使windowContainer加载w页面并传参?


打开对应windowcontainer的路由功能就可以了!

回复 支持 反对

使用道具 举报

64

主题

321

帖子

679

积分

高级会员

Rank: 4

积分
679
QQ
 楼主| 发表于 2017-1-9 11:06:01 | 显示全部楼层
本帖最后由 ufo1982ufo 于 2017-1-9 11:07 编辑
liangyongfei 发表于 2017-1-5 11:58
1.放淘宝本来就是切换content的时候,才去加载下面的windowContainer 的啊!
你的逻辑是一样的!只不过需 ...

在带参数跳转的时候:
                this.getParentModel().comp('windowContainer4').load(url,params);
如果在上一句后使用:this.getParentModel().comp('contents').to('infodetailcontent');会重复进行load,而且id的参数还在。
load之后如何实现激活对应的content而不会再次加载一遍?对应的content的windowcontainer的autoload已经设置为false。
回复 支持 反对

使用道具 举报

发表于 2017-1-9 14:52:27 | 显示全部楼层
ufo1982ufo 发表于 2017-1-9 11:06
在带参数跳转的时候:
                this.getParentModel().comp('windowContainer4').load(url,params ...

是否在contents 组件的切换事件中也写了windowContainer 的load方法呢??你自己调试看下代码吧!
如果 load 方法只运行了一次!里面的页面不会加载两次才对的!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

64

主题

321

帖子

679

积分

高级会员

Rank: 4

积分
679
QQ
 楼主| 发表于 2017-1-9 14:57:37 | 显示全部楼层
liangyongfei 发表于 2017-1-9 14:52
是否在contents 组件的切换事件中也写了windowContainer 的load方法呢??你自己调试看下代码吧!
如果 l ...

的却自己疏忽 了,在main页做了延迟加载,修改了就ok了!
  1.         Model.prototype.contentsActiveChange = function(event){
  2.                 var to = event.to;
  3.                 if(to>=0 & to<=3){
  4.                         this.comp('windowContainer'+to).load();
  5.                 }
  6.         };
复制代码
回复 支持 反对

使用道具 举报

64

主题

321

帖子

679

积分

高级会员

Rank: 4

积分
679
QQ
 楼主| 发表于 2017-1-9 14:59:45 | 显示全部楼层
liangyongfei 发表于 2017-1-4 17:10
可以参考仿淘宝案例的实现!需求是一摸一样的
http://docs.wex5.com/wex5-ui-question-list-2095/ ...

我在子页面的用户交互完了,当用户切换content的时候,我要保存用户操作的数据怎么办,没有保存的按钮。我看了“页面生命周期”的文章后,做了inactive的事件,似乎没有用,这个需要在哪里写?
  1.         Model.prototype.modelInactive = function(event){
  2. //                debugger;
  3.                 var data = this.comp('infoData');
  4.                 var e = data.getValue('enjoy_count');
  5.                 var h =data.getValue('hate_count');
  6.                 var i =window.i;
  7.                 e=e+i;
  8.                 h=h-i;
  9.                 data.setValue('enjoy_count',e);
  10.                 data.setValue('hate_count',h);
  11.                 data.saveData();
  12.         };
复制代码
回复 支持 反对

使用道具 举报

发表于 2017-1-9 15:43:47 | 显示全部楼层
ufo1982ufo 发表于 2017-1-9 14:59
我在子页面的用户交互完了,当用户切换content的时候,我要保存用户操作的数据怎么办,没有保存的按钮。 ...

在windowContainer 组件中 onActive事件不能被触发!只能是在父页面的onActive 中触发  也可以在content的onActive  才能触发!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

64

主题

321

帖子

679

积分

高级会员

Rank: 4

积分
679
QQ
 楼主| 发表于 2017-1-9 16:44:08 | 显示全部楼层
liangyongfei 发表于 2017-1-9 15:43
在windowContainer 组件中 onActive事件不能被触发!只能是在父页面的onActive 中触发  也可以在content ...

微信截图_20170109163901.png
在main里写了content离开的事件如下:
  1.         Model.prototype.infodetailcontentInactive = function(event){
  2.                 debugger;
  3.                 alert('bye,infodetailcontent');
  4.                 var model = this.comp('windowContainer4').getInnerModel();
  5.                 var data = model.comp('infoData');
  6.                 var e = data.getValue('enjoy_count');
  7.                 var h =data.getValue('hate_count');
  8.                 var i =model.i;
  9.                 e=e+i;
  10.                 h=h-i;
  11.                 data.setValue('enjoy_count',e);
  12.                 data.setValue('hate_count',h);
  13.                 data.saveData();
  14.                 data.refreshData();
  15.                
  16.         };
复制代码
当再次进入detail.w页面时,即使id和之前那条不一样,都是页面的组件的状态还是上次的。根据页面生命周期的说法应该是没有初始化那些组件(比如“顶”那个按钮),这会导致我页面的逻辑不符合,我希望在进入页面时也初始化那些组件(如果能不重新加载更好,毕竟需要时间,更SPA就是为了加载更快),请指点,谢谢!
回复 支持 反对

使用道具 举报

发表于 2017-1-9 16:59:50 | 显示全部楼层
ufo1982ufo 发表于 2017-1-9 16:44
在main里写了content离开的事件如下:当再次进入detail.w页面时,即使id和之前那条不一样,都是页面的组 ...

windowContainer 中的页面本来就会缓存的啊!
load方法只是传参!并不会重新加载整个页面的!你可以试试第二次调用load方法的时候  
页面的onload 方法肯定不会触发的
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-20 13:23 , Processed in 0.078893 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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