onsenui:“pushPage已经在运行”和“无法读取属性'removeEventListener'的null”

时间:2017-07-30 23:22:56

标签: onsen-ui

我正在使用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.

如果删除修改模板的代码部分,一切正常,没有问题返回,没有错误消息,再没有问题加载模板。

1 个答案:

答案 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>