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

QQ登录

只需一步,快速开始

查看: 1898|回复: 5

[结贴] shell.showPage跳转页面,传递一个js方法在另一个页面调用问题

[复制链接]

52

主题

158

帖子

522

积分

高级会员

Rank: 4

积分
522
QQ
发表于 2017-6-13 14:23:44 | 显示全部楼层 |阅读模式
场景描述:A页面中有个image(html)组件,这个组件的bind-attr-src属性绑定KO对象加载图片,A页面通过shell.showPage跳转到B页面,想在B页面关闭后,A页面的image(html)的bind-attr-src指向另一张图片进行展示。

我参考http://docs.wex5.com/wex5-ui-question-list-2048/   在A页面的shell.showPage中传递js方法,js方法中的代码如下
this.fqhdimage=justep.Bind.observable(require.toUrl("$UI/pcapp/img/fqhdh.png"));    为KO对象重新赋值。

在B页面点击返回按钮的事件中调用A页面的js方法,B页面的返回按钮事件js代码如下:
Model.prototype.closeBtnClick = function(event){
        this.params.data.method(this.peerId);
this.close();
        };

添加断点,经过调试,代码正常执行,KO对象重新赋值成功。
但是,页面中加载出来的图片并没有秩序另一张图片。
请问,该如何实现该功能?我的问题在哪?
发表于 2017-6-13 15:47:50 | 显示全部楼层
KO对象必须体检定义才行的!
this.fqhdimage=justep.Bind.observable()

赋值的时候应该是
this.fqhdimage.set(require.toUrl("$UI/pcapp/img/fqhdh.png"));

而不是重新生成一个KO对象!
ko对象必须是同一个!只不过是给他赋值不同的值就行了!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

52

主题

158

帖子

522

积分

高级会员

Rank: 4

积分
522
QQ
 楼主| 发表于 2017-6-13 16:02:48 | 显示全部楼层
本帖最后由 yuyunyun051 于 2017-6-13 16:07 编辑

KO对象已经提前定义,如下图标红: 3.png

A页面的js方法中我改为self.fqhdimage.set(require.toUrl("$UI/pcapp/img/fqhdh.png"));下图所示:
1.png

调试代码,运行到这一行报错,错误如下:
2.png
A页面的这个Model.prototype.refresh = function(peerId) 代码是自己定义的,需要B页面在关闭的调用。之前我写的可以执行成功,但是fqhdimage绑定的图片并没有变化

回复 支持 反对

使用道具 举报

发表于 2017-6-13 17:40:53 | 显示全部楼层
yuyunyun051 发表于 2017-6-13 16:02
KO对象已经提前定义,如下图标红:

A页面的js方法中我改为self.fqhdimage.set(require.toUrl("$UI/pcapp/i ...

你先打印一下
self.fqhdimage.get()
值是多少呢??

报错是set方法不存在!
这个页面中  存在this.fqhdimage 这个ko对象吗?
定义和使用ko对象确定是同一个页面吗?

为什么要使用self
用一个方法中 直接使用this 就可以啊!
只有回调或者定义方法不规则才 使用self 代替this的
http://docs.wex5.com/wex5-ui-question-list-2160

只要img 的bind-attr-src 绑定这个ko对象!
fqhdimage ko对象能指定新的URL地址!就可以自动显示新的图片
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

52

主题

158

帖子

522

积分

高级会员

Rank: 4

积分
522
QQ
 楼主| 发表于 2017-6-14 09:24:55 | 显示全部楼层
今天又测试了一遍,发现一个问题,A页面的
Model.prototype.refresh = function(peerId){}
方法中,获取不到
var Model = function() {
        this.callParent();
                this.userIds = [];
                this.createGroupState = justep.Bind.observable(true);
                this.id = 1;
                this.pid = "";
                this.type = "group";
                this.messageUrl = "";
                this.fqhdimage = justep.Bind.observable("");
                this.cyhdimage = justep.Bind.observable("");
                this.fqhdclick = false;
                this.cyhdclick = true;
               
                this.did = 1;
                this.dpid = "";
                this.dtype = "group";
                this.dmessageUrl = "";
                this.dfqhdimage = justep.Bind.observable("");
                this.dcyhdimage = justep.Bind.observable("");
                this.dfqhdclick = false;
                this.dcyhdclick = true;
};中定义的变量。


refresh方法是在A页面定义的,在A页面通过shell.showPage打开B页面的时候,把refresh方法传递过去,B页面点击关闭按钮的时候发起refresh方法的调用。不知道为啥在refresh方法中获取不到A页面预先定义的变量。
回复 支持 反对

使用道具 举报

52

主题

158

帖子

522

积分

高级会员

Rank: 4

积分
522
QQ
 楼主| 发表于 2017-6-14 10:33:56 | 显示全部楼层
已经处理完毕了,我在var Model = function() {
}外面定义了个变量var me,在Model里面赋值me= this;然后在refresh方法里面就可以使用me.fqhdimage.set方法。

谢谢。请结贴
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-24 14:30 , Processed in 0.082892 second(s), 26 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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