八年男孩
八年男孩
  • 发布:2014-10-21 09:30
  • 更新:2015-07-30 20:33
  • 阅读:6057

自定义事件监听不起作用

分类:MUI

侧边栏li的tap事件,点击时出发主页的ckeck事件,但是index页面加载了,事件没有触发。

其实我想要的效果是,点击侧边栏的li元素时,(侧边栏就是在主页加的),首先触发主页的一个函数,这个函数里先关掉侧边栏然后,主页进行加载刚才侧边栏点击事件传递回来的页面信息。

下面是侧边栏的代码:
mui.plusReady(function() {
mui('ul').on('tap', 'li', function() {
var detailPage = null;
var links = this.getAttribute('id');
//alert(links);
//获得详情页面
if (!detailPage) {
detailPage = plus.webview.getWebviewById('HBuilder');
}
//alert(detailPage.getURL())
//触发详情页面的newsId事件
//mui.fire(detailPage, 'newsId', {
//id: links
//});
mui.fire(detailPage, 'check', {
id: '123'
});
//打开详情页面

			});  

下面是主页的代码:
window.addEventListener('check',function(event){
//获得事件参数
alert(event.detail.id) ;

});

并没有触发。直接加载了index页面。

2014-10-21 09:30 负责人:无 分享
已邀请:
DCloud_UNI_CHB

DCloud_UNI_CHB

你用js代码打开index.html,当然会遵循你的意愿了,删除如下代码:

mui.openWindow({  
id: 'index.html',  
url:"index.html"  
});  

  • 八年男孩 (作者)

    去掉之后,页面不跳转了,但是事件没有监听到


    2014-10-21 15:53

一卡通

一卡通

我也遇到这个情况了, 文档里有mui.openWindow啊。

  • sunrise52java

    请问这个问题你解决了吗?如何解决的


    2015-07-13 16:40

noprom

noprom

我也遇到了这个问题了,请问楼主解决了吗?
我的情景是:

1.首先进入app,默认进入到首页,并且预加载b和c页面;
2.在首页里面进行操作,发现没有登录,跳转到登录页;
3.登录成功后,调用mui.fire取到b页面,并自定义事件;
4.b页面里面的自定义事件并没有执行。

noprom

noprom

我的demo如下:

1.首先在首页进行一些操作,不满足条件,跳转到登录页面:
2. 在登录页面,登录成功后:

                          mui.ajax(loginUrl, {  
				data: {  
					username: account,  
					password: mui.encryption(pwd),  
					token: ''  
				},  
				dataType: 'json', //服务器返回json格式数据  
				type: 'post', //HTTP请求类型  
				timeout: 20000, //超时时间设置为10秒;  
				success: function(data) {  
					app_debug && mui.log(TAG, JSON.stringify(data));  
					plus.nativeUI.toast(data.message);  
					if (data.status == 1) { // 登录成功  
						  
				                // 及时更新“我的”界面元素  
						alert("调用自定义事件之前");  
						var userPage = plus.webview.getWebviewById("user");  
						mui.fire(userPage, 'updateViews');  
						plus.webview.currentWebview().hide();  
					}  
				},  
				error: function(xhr, type, errorThrown) {  
					//异常处理;  
					console.log(xhr + type + errorThrown);  
					plus.nativeUI.toast("网络出现异常,请检查网络!");  
				}  
			});

然后在user页面的代码是这样的:

//添加newId自定义事件监听  
window.addEventListener('updateViews', function(event) {  
	alert("调用了自定义插件");  
	mui.log("user", "调用了自定义插件");  
	reloadPage();  
	mui.log("user", "调用了自定义插件");  
});

效果如下:
只在登录页面弹出了alert,user页面并没有执行监听事件:

  • 好好吃饭

    mui.plusReady(function() {

    //预加载详情页

    var userPage = mui.preload({

    url: '...html',

    id: '....',

    styles: {

    "render": "always",

    "popGesture": "hide",

    "bounce": "vertical",

    "bounceBackground": "#efeff4",

    "titleNView": titleNView

    }

    });

    });


    2019-10-03 09:44

该问题目前已经被锁定, 无法添加新回复