sencha touch无法读取null的属性'detach'是由setActiveItem引起的

时间:2014-06-28 13:04:00

标签: sencha-touch

我正在使用sencha touch开发app,但在tapPanel上激活选项卡时遇到问题 我正在通过下一个声明激活标签:

tabpanel.setActiveItem('#idLogin');

一切正常,选项卡实际上已激活,但稍后(因此不会直接在此语句之后),console.log中会出现错误。删除这段代码时,错误不会出现,所以我确定它与此语句有关。 错误:

Uncaught TypeError: Cannot read property 'detach' of null

有人遇到过这个问题,你能解决吗?

2 个答案:

答案 0 :(得分:3)

首先,定义"稍后。"使用sencha-touch-all-debug.js运行您的应用程序,找到抛出错误的语句。

其次,看看来源。你会看到'分离'是为了从DOM中删除一个元素:"

 detach: function() {
    var dom = this.dom;

    if (dom && dom.parentNode && dom.tagName !== 'BODY') {
        dom.parentNode.removeChild(dom);
    }

    return this;
},

仅在几个地方调用:直接删除元素,或者由于视图导航或其他视图交换而更新内部包装器时。

在大多数情况下,受影响的元素应用了动画,这意味着该错误是尝试删除已经在范围内动画化的元素的副作用。看起来像hacky一样,解决方案是获取父容器的布局,抑制其动画,删除元素,然后重新应用动画,如下所示:

container.getLayout().setAnimation(false);
// item removal or view change here;
container.getLayout().setAnimation(true);

答案 1 :(得分:0)

使用name =“id”

的表单字段时出现同样的错误