我使用ExtJs 4.1和DeftJs。
当同时使用相同视图的多个实例时,在给定id: 'abc'
的组件时会遇到问题,因为所有实例都具有相同的ID。
那么如何命名id以防止这种情况发生呢?
一种选择是动态创建组件。
我更喜欢的另一个选项是仅通过某个视图的id来调用组件,例如:
this.getView.getComponent('x').getId('abc')
答案 0 :(得分:3)
如果可以将父元素设置为唯一ID,则可以对子项使用itemId属性。来自sencha文档的示例(取自下面的链接):
var c = new Ext.panel.Panel({ //
height: 300,
renderTo: document.body,
layout: 'auto',
items: [
{
itemId: 'p1',
title: 'Panel 1',
height: 150
},
{
itemId: 'p2',
title: 'Panel 2',
height: 150
}
]
})
p1 = c.getComponent('p1'); // not the same as Ext.getCmp()
p2 = p1.ownerCt.getComponent('p2'); // reference via a sibling
http://docs.sencha.com/ext-js/4-0/#!/api/Ext.AbstractComponent-cfg-itemId
答案 1 :(得分:0)
我尝试避免全局ID并使用控制器中的this.getView().getComponent()
来访问我的视图。如果有必要,我还在我的id名称中使用唯一的字符串。