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

QQ登录

只需一步,快速开始

查看: 625|回复: 61

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

[复制链接]

61

主题

312

帖子

644

积分

高级会员

Rank: 4

积分
644
QQ
发表于 2017-1-4 16:32:48 | 显示全部楼层 |阅读模式
本帖最后由 ufo1982ufo 于 2017-1-4 16:33 编辑

微信截图_20170104161927.png
如图,main.w文件。在其中用contents组件嵌入了windowcontainer组件,每个windowcontainer都是指到一个对应的xxx.w文件。
之前的页面传参后都是使用a标签来跳转,都是这似乎违背了wex5单页应用的原则和优势,如果我要重新来改为单页应用这样的 话,在这些内嵌的w文件如何传参给windowcontainer,然后主页面要从contents中的一个content接参,又要传给其另外一个content里的windowcontainer,接着又是里面的w文件接参,并且还要激活对应的content。我还使用了window.xxx的全局变量,希望所有的w文件都可以使用!
1、这似乎是遇到了问题,这些过程需要如何实现?
2、或者我的思路本来就错了,如果可以实现我的功能需要如何来设计这些页面?
3、另外contents的windowcontainer的autoload全部设置为false后,默认的那个content对应的windowcontainer也不会加载了,要怎么整才会加载?因为或许用户进来不希望进入默认的那个content,不要浪费加载不必要的content的时间!
谢过!

5

主题

3万

帖子

5464

积分

版主

Rank: 7Rank: 7Rank: 7

积分
5464
QQ
发表于 2017-1-4 17:10:11 | 显示全部楼层
可以参考仿淘宝案例的实现!需求是一摸一样的
http://docs.wex5.com/wex5-ui-question-list-2095/
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

61

主题

312

帖子

644

积分

高级会员

Rank: 4

积分
644
QQ
 楼主| 发表于 2017-1-5 09:52:53 | 显示全部楼层
本帖最后由 ufo1982ufo 于 2017-1-5 09:54 编辑
liangyongfei 发表于 2017-1-4 17:10
可以参考仿淘宝案例的实现!需求是一摸一样的
http://docs.wex5.com/wex5-ui-question-list-2095/ ...

这些案例都初略的看过了,我的情况是这样的:
在main文件中的contents组件下的content1的windowcontainer1中嵌入的一个w文件传送一个参数main文件中的contents组件下的content2的windowcontainer2中嵌入的另一个w文件。意思就是在main中的下面buttongroup还在,而且始终是在main页面,事件触发后main中的contents跳到content2,并把参数传给windowcontainer2中的那个w文件,然后就是展现出接受参数后的结果!。
像案例中(包含仿淘宝和途牛)都是直接跳转到了一个新的w文件,这不太符合我的意思!
回复 支持 反对

使用道具 举报

5

主题

3万

帖子

5464

积分

版主

Rank: 7Rank: 7Rank: 7

积分
5464
QQ
发表于 2017-1-5 11:58:43 | 显示全部楼层
ufo1982ufo 发表于 2017-1-5 09:52
这些案例都初略的看过了,我的情况是这样的:
在main文件中的contents组件下的content1的windowcontainer1 ...

1.放淘宝本来就是切换content的时候,才去加载下面的windowContainer 的啊!
你的逻辑是一样的!只不过需要在contents 的 onActiveChange 事件中 判断是切换到哪个content 了,然后使用windowContainer.load 方法将参数传递进去!  在里面的onParamsReceive  事件中  接收参数即可!


在父页面中,使用 this.comp(‘windowContainerXid’).getInnerModel()  可以获取到子页面的model对象!从而任何数据都有可以获取到的!获取后windowContainer.load 传给下一个页面即可

2.在子页面中也可以使用this.getParent() 获取父页面的model对象!!

这样就足够做到相互访问数据了!

3.
另外,单页应用中,两个不相关的 页面直接相互访问还可以使用事件派发的方式实现
http://docs.wex5.com/wex5-ui-question-list-2034/



三种都可以试试



qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

61

主题

312

帖子

644

积分

高级会员

Rank: 4

积分
644
QQ
 楼主| 发表于 2017-1-6 09:37:54 | 显示全部楼层
liangyongfei 发表于 2017-1-5 11:58
1.放淘宝本来就是切换content的时候,才去加载下面的windowContainer 的啊!
你的逻辑是一样的!只不过需 ...

我在windowcontainer2直接打开main的windowcontainer1并传参,没有成功,显示undefined,请帮忙看看!
search.w片段,在searchcontent下的windowcontainer1
  1.                 var url = require.toUrl('./infolist.w');
  2.                 var keyValue =  this.comp("keyInput").val();                                                
  3.                 var params = {keyValue:keyValue};                                                                                      
  4.                 this.getParentModel().comp('contents').to('infolistcontent');                //调父业contents
  5.                 this.getParentModel().comp('windowcontainer0').load(url,params);                //调父业windowcontainer并传参
复制代码


infolist.w在infolistcontent下的windowcontainer0里。
  1.                 var key = event.params.keyValue;                //接收参数
  2.                 alert('传参:uk = '+key);
复制代码
回复 支持 反对

使用道具 举报

61

主题

312

帖子

644

积分

高级会员

Rank: 4

积分
644
QQ
 楼主| 发表于 2017-1-6 10:00:41 | 显示全部楼层
错误提示:Uncaught TypeError: Cannot read property 'keyValue' of undefined
改了多次都undefined或者空!
回复 支持 反对

使用道具 举报

61

主题

312

帖子

644

积分

高级会员

Rank: 4

积分
644
QQ
 楼主| 发表于 2017-1-6 10:21:55 | 显示全部楼层
在infolist.w里的Model.prototype.modelParamsReceive事件中,chrome调试里显示
  1. event = Object {source: n, params: undefined, data: undefined, bindingContext: u.bindingContext}
复制代码

其实就是那些子页面传的参数直接就没有过来!求各位解答!
回复 支持 反对

使用道具 举报

5

主题

3万

帖子

5464

积分

版主

Rank: 7Rank: 7Rank: 7

积分
5464
QQ
发表于 2017-1-6 11:46:59 | 显示全部楼层
ufo1982ufo 发表于 2017-1-6 10:21
在infolist.w里的Model.prototype.modelParamsReceive事件中,chrome调试里显示

其实就是那些子页面传的参 ...

本地测试没问题哎!
在一个页面中放置两个windowContainer
第一个windowContainer 中的w页面中,按钮点击事件写代码:
  1.         Model.prototype.goPage4Click = function(event){
  2.                 var url = require.toUrl('./page4.w');
  3.                 var params = {test:"test"};
  4.                 debugger;
  5.        
  6.                 this.getParentModel().comp('windowContainer2').load(url,params);
  7.         };
复制代码


第二个windowContainer 的modelParamsReceive事件中写代码
  1. Model.prototype.modelParamsReceive = function(event){
  2.                 debugger;
  3.                 var test = event.params.test;                //接收参数
  4.                 alert('传参:uk = '+test);
  5.         };
复制代码



点击按钮,可以接受到参数!是正常的!你先试试吧!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

61

主题

312

帖子

644

积分

高级会员

Rank: 4

积分
644
QQ
 楼主| 发表于 2017-1-6 12:58:38 | 显示全部楼层
本帖最后由 ufo1982ufo 于 2017-1-6 13:08 编辑
liangyongfei 发表于 2017-1-6 11:46
本地测试没问题哎!
在一个页面中放置两个windowContainer
第一个windowContainer 中的w页面中,按钮点 ...

用你的代码的确本地测试时好的!问题出在这里了!
  1.                 this.getParentModel().comp('contents').to('infolistcontent');                //调父业contents
  2.                 this.getParentModel().comp('windowcontainer0').load(url,params);                //调父业windowcontainer并传参
复制代码

把2个的位置颠倒,不然执行了“this.getParentModel().comp('contents').to('infolistcontent');”就不执行后面这个就没有了参数!
回复 支持 反对

使用道具 举报

61

主题

312

帖子

644

积分

高级会员

Rank: 4

积分
644
QQ
 楼主| 发表于 2017-1-6 13:07:47 | 显示全部楼层
liangyongfei 发表于 2017-1-6 11:46
本地测试没问题哎!
在一个页面中放置两个windowContainer
第一个windowContainer 中的w页面中,按钮点 ...
  1.         Model.prototype.modelParamsReceive = function(event) {
  2.                 debugger;
  3.                 var self = this;
  4.                 if (event & event.params & event.params.data ){
  5.                         var key = event.params.data.keyValue;                //接收url参数
复制代码

如何在infolist.w文件中判断是否有参数进来,我用上面的代码后可以进入,但是搜索的参数就传不进来了。
如何判断是否有参数?并且如何在点击buttongroup是对应的content里的windowcontainer就刷新(不带参数),我点击觉得就没有刷新!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2017-6-22 22:05 , Processed in 0.287277 second(s), 28 queries .

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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