我正在使用sencha touch开发app,但在tapPanel上激活选项卡时遇到问题 我正在通过下一个声明激活标签:
tabpanel.setActiveItem('#idLogin');
一切正常,选项卡实际上已激活,但稍后(因此不会直接在此语句之后),console.log中会出现错误。删除这段代码时,错误不会出现,所以我确定它与此语句有关。 错误:
Uncaught TypeError: Cannot read property 'detach' of null
有人遇到过这个问题,你能解决吗?
答案 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”
的表单字段时出现同样的错误