Extjs 4.的位置.没有显式id的哈希

Extjs 4. location.hash without explicit ids

本文关键字:id 哈希 位置 Extjs      更新时间:2023-09-26

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

location.hash = 'UID'

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

一旦你有了元素的containerelement本身,然后调用:

element.scrollIntoView(container, ...);

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

一个好的OO设计应该提供你需要的参考。ExtJS在99.9%的情况下可以做到这一点。

示例:itemclick事件有一个参数this。可以是窗口,面板,按钮,或者其他。

itemclick( myElement, record, item, index, e, eOpts ) {
    ...
    location.hash = myElement.id;
    ...        
}
如果你有一个Ext.Component,但是你想要这个元素的父组件或子组件,你应该使用up()down()方法。这仍然比Ext.getCmp()更快,因为您不需要搜索整个DOM。
 myButton.up(); //get parent
 myButton.up("toolbar") //tries to find a parent with xtype "toolbar"
 myButton.down("textfield"); //you get it... 

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

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