ExtJs - 在使用多个实例时如何设置组件的id

时间:2012-06-06 08:40:49

标签: javascript model-view-controller extjs

我使用ExtJs 4.1和DeftJs。

当同时使用相同视图的多个实例时,在给定id: 'abc'的组件时会遇到问题,因为所有实例都具有相同的ID。

那么如何命名id以防止这种情况发生呢?

一种选择是动态创建组件。

我更喜欢的另一个选项是仅通过某个视图的id来调用组件,例如:

this.getView.getComponent('x').getId('abc')

2 个答案:

答案 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名称中使用唯一的字符串。