Extjs 4. location.hash没有明确的ID

时间:2014-05-05 08:34:35

标签: javascript extjs extjs4

在我的面板中,我有一个导航树。在itemclick窗口中向下滚动到特定的表单字段。我是这样做的:

location.hash = 'UID'

所以,我可以通过Ext.getCmp(UID)获取元素。但我知道,这种使用id的做法并不好,因为可能出现布局崩溃。所以,我现在想要使用itemId而不是id,但问题是如何模拟与location.hash相同的行为。

3 个答案:

答案 0 :(得分:1)

仅仅因为您没有定义ID,这并不意味着该元素没有ID。 ExtJS自动创建唯一ID。

良好的OO设计应该提供您需要的参考。 ExtJS这样做我会说99.9%。

示例: itemclick 事件,参数。可以是窗口,面板,按钮等等。

itemclick( myElement, record, item, index, e, eOpts ) {
    ...
    location.hash = myElement.id;
    ...        
}

如果您有一个Ext.Component,但想要此元素的父组件或子组件,则应使用向上()向下()方法。这仍然比Ext.getCmp()更快,因为您不需要搜索整个DOM。

 myButton.up(); //get parent
 myButton.up("toolbar") //tries to find a parent with xtype "toolbar"
 myButton.down("textfield"); //you get it... 

答案 1 :(得分:1)

获得元素containerelement后,请调用:

element.scrollIntoView(container, ...);

有关详细信息,请参阅Element Docs

答案 2 :(得分:0)

您可以使用以下命令获取该项目:

Ext.ComponentQuery.query('[itemId=' + UID + ']')[0];