ExtJS 4 2 元件的查詢方式

2021-09-08 04:21:06 字數 4695 閱讀 6290

元件建立了,就有方法找到這些元件。在dom、jquery都有各自的方法查詢元素/元件,extjs也有自己獨特的方式查詢元件、元素。本次從全域性查詢、容器內查詢、form表單查詢、通用元件等4個方面介紹元件的查詢方式。

1. 全域性查詢方式

2. 容器內查詢

3. form查詢子元件

4. 通用元件查詢方式

全域性查詢方式指在整個extjs框架中查詢元件。

說明:此方法是在所有元件中查詢匹配此id的元件。

引數

①id :元件的id。

返回值

:返回匹配的元件;若沒有找到返回undefined。

示例

// 獲取id為reg_form的元件

var form = ext.getcmp('reg_form');

引數

①selector  :匹配規則,可以為元件的xtype、id(字首加上#)、屬性以及css selector。

②root 可選:指定在哪個容器內進行查詢。 若省略,將進行全域性查詢。

返回值

:返回匹配的元件陣列;若沒有找到匹配的,返回乙個空陣列。

示例

// 1.xtype查詢:獲取所有文字輸入框(xtype:textfield)

var textfieldarray = ext.componentquery.query('textfield');

// 2.id查詢

var formarray = ext.componentquery.query('#query_form');

// 3.xype+屬性查詢:指定from元件,並且title屬性的值為'表單'

var formarray = ext.componentquery.query('form[title=表單]');

// 4.屬性查詢:title屬性的值為'表單'的元件

var formarray = ext.componentquery.query('[title=表單]');

下面的幾個方法是在容器型別元件內查詢對應的子元件或子容器。

說明:此方法是在容器內的第一層子元件內進行查詢。

引數

①selector  :匹配規則,可以為元件的xtype、id(字首加上#)、屬性以及css selector。

返回值

:返回匹配的元件;若沒有找到匹配的,返回null。

示例

// 返回form表單下的第一層 xtype為fieldcontainer 的子元件

var fc = ext.getcmp('query_form').child('fieldcontainer');

引數

①selector  可選:匹配規則,可以為元件的xtype、id(字首加上#)、屬性以及css selector。若省略,返回第乙個子元件。

返回值

:返回匹配的元件;若沒有找到匹配的,返回null。

示例

// 返回form表單下的第乙個 xtype為textfield 的子元件

var txt = ext.getcmp('query_form').down('textfield');

引數

①selector  可選:匹配規則,可以為元件的xtype、id(字首加上#)、屬性以及css selector。若省略,返回所有子元件。

返回值

:返回匹配的子元件陣列;若沒有找到匹配的,返回乙個空陣列。

示例:

// 返回form表單下的所有 xtype為textfield 的子元件

var txtarray = ext.getcmp('query_form').query('textfield');

引數

①fn :匹配函式;容器內的每個元件都會呼叫此函式,函式內返回false不會出現在返回的元件集合裡。

②scope 可選:作用域。 若省略,為呼叫的子元件。

返回值

:返回匹配的子元件陣列;若沒有找到匹配的,返回乙個空陣列。

示例

// 返回表單內有內容的元件

var cparray = ext.getcmp('query_form').queryby(function(cp)

return false;

})

注意:fn函式只有返回false時,此元件才不加入返回的元件陣列裡;return undefined、null 這種都是會加入到元件陣列裡。

引數

①id  :元件的id,不需要加字首'#';等同於containerobj.down('#' + id)。

返回值

:返回匹配的子元件;若沒有找到匹配的,返回null。

示例

// 獲取表單內id為 a1 的元件

var cp = ext.getcmp('query_form').querybyid('a1');

並不是所有的元件都會賦值id,在form表單中的元件大多都是採用name屬性。

引數

①id/name :元件的id或name。

返回值

返回匹配的表單元件;若沒有找到,返回null。

示例

ext.create('ext.form.panel', ,,]

})

ext.getcmp('login_form').getform().findfield('loginname'); // 獲取登入名元件

ext.getcmp('login_form').getform().findfield('loginpwd'); // 獲取密碼元件

通用元件查詢方式指的是所有元件都支援的查詢方式,主要有以下幾種:

① up() : 向上查詢祖先容器。

② previoussibling() :向上查詢兄弟元件(同一層級)。

③ nextsibling() :向下查詢兄弟元件(同一層級)。

引數

①selector  可選:匹配規則,可以為元件的xtype、id(字首加上#)、屬性以及css selector。若省略,返回第乙個上級父容器。

返回值

:返回匹配的父容器;若沒有找到匹配的,返回null。

說明:可簡寫為 prev()。

引數

①selector  可選:匹配規則,可以為元件的xtype、id(字首加上#)、屬性以及css selector。若省略,返回第乙個上級父容器。

返回值

:返回匹配的元件;若沒有找到匹配的,返回null。

說明:可簡寫為next()。

引數

①selector  可選:匹配規則,可以為元件的xtype、id(字首加上#)、屬性以及css selector。若省略,返回第乙個上級父容器。

返回值

:返回匹配的元件;若沒有找到匹配的,返回null。

// 1.上級容器

var fc = txt.up(); // => fieldcontainer_b

var form = txt.up().up(); // => form表單

// 2.向上獲取同級元件

var txtb2 = txt.prev(); // => textfield_b2

var txtb1 = txt.prev().prev(); // => textfield_b1

// 3.向下獲取同級元件

var txtb4 = txt.next(); // => textfield_b4

var txtb5 = txt.next().next(); // => textfield_b5

web開發之路系列文章

ExtJs4 2的合併單元格

首先說明演算法非原創,感謝提供了絕大部分思路 我這兒就是改改 使4.1的 能適應在4.2裡而已.只是看到網上目前還沒有4.2合併單元格方法 貼出來拋磚引玉 也算是全宇宙首發吧 哈哈.這個方法並不完美 文末會提到 還請高手們幫忙改進 june8 ruantao1989 合併單元格 param grid...

EXTJS元件化 三 元件之間的曖昧關係

我忽然發現,菜鳥更願意與人分享他的學習成果.在開發過程中,當許多小組件拼合成乙個大元件之後,最先遇到的問題就是元件與元件之間的通訊和資料互動.如果你的元件封裝的比較死 即在建立的時候不需要配置屬性 則可以通過組建的自定義事件來完成元件與元件之間的專案呼叫.下面的介面其實沒有必要這麼做,這麼做的目的只...

四 元件的使用

元件可以直接通過new 關鍵子來建立,比如控制項乙個視窗,使用new ext.window 建立乙個 則使用new ext.gridpanel 除了一些普通的元件以外,一般都會在建構函式中通過傳遞構造引數來建立元件。元件的建構函式中一般都可以包含乙個物件,這個物件包含建立元件所需要的配置屬性及值,元...