我非常困惑在使用grep对象时应该使用up()、down()还是Ext.getCmp(ID)。
对我来说,更容易的方式是将ID定义为对象,并通过Ext.getCmp('ID')检索对象,这样代码看起来更加清晰。
举个例子:
console.log(this.up('panel').up('panel').down('grid'));
console.log(Ext.getCmp('myPanel'));
哪一个更好,以提高性能为例?
我非常困惑在使用grep对象时应该使用up()、down()还是Ext.getCmp(ID)。
对我来说,更容易的方式是将ID定义为对象,并通过Ext.getCmp('ID')检索对象,这样代码看起来更加清晰。
举个例子:
console.log(this.up('panel').up('panel').down('grid'));
console.log(Ext.getCmp('myPanel'));
哪一个更好,以提高性能为例?
Ext.getCmp()
使用内部哈希映射,因此速度非常快,几乎与基于键检索数组中的值一样快。
.up()
和 down()
使用组件层次遍历实现,这是一个较慢的过程。
但是 up()
和 down()
使用选择器,因此它们也可以选择类,而不仅仅是id。
您只需要记住,有各种情况下可能需要使用 up()
或 down()
,例如当有多个控件共用一个处理程序时,或者当您要获取的组件是由框架自动生成的,因此您无法自己设置其id。
Ext.getCmp()
,而更多地使用refs
及其相应的getter。但我认为这更多是样式上的问题。使用refs的另一个优点是,如果您更改组件的ID,您只需要在refs中更新它,而使用getCmp()
则需要进行代码基础搜索和替换。 - Izhaki