我正在使用cordova + onsenui的移动应用程序。我基本上有一个通用的template.html,我首先加载,然后通过jquery修改所需的特定参数。我首先执行ajax请求以获取该模板的细节,然后使用
加载模板fn.pushPage({'id': 'template.html', 'title': 'View template'});
并更改jquery所需的所有参数。首先应用程序会尝试在模板完成加载之前执行更改,并且文档就绪事件将无法工作,所以我只是在jquery的onsuccess部分执行了一个泛型函数,就像这个
function update_template(){
if ($('#templateItem').length) {
//this part runs if the template has loaded
//replace all the poarameters with jquery
} else {
window.setTimeout(edit_profile, 0.1); // 5 seconds
}
};
这似乎工作正常,但是在运行后退按钮进入上一页后
的document.getElementById( 'appNavigator')。popPage()
我在控制台中收到一条错误消息
Uncaught (in promise) TypeError: Cannot read property 'removeEventListener' of null
如果我再试一次看模板,我会
Uncaught (in promise) pushPage is already running.
如果删除修改模板的代码部分,一切正常,没有问题返回,没有错误消息,再没有问题加载模板。
答案 0 :(得分:1)
问题是我正在以错误的方式修改输入, 做
$('#inputNameId').html('text to replace');
在将其更改为
之后打破了网站的HTML$('#inputNameId').val('text to replace');
一切正常。对于记录,如果您想在模板加载完成后进行更改,您应该查看init方法以避免在javascript中等待,如下所示:
document.addEventListener('init', function(event) {
var page = event.target;
if (page.id === 'template') {
//code to run
};
});
其中template是模板的id,其中包含:
<template id='generic.html'>
<ons-page id='***template***'>
...
<ons-page>
<template>