ExtJS 常用工具函數

來源:互聯網
上載者:User

J* 1.編解碼函數
* encode和decode函數是專門用來對JSON資料進行編碼和解碼的函數。
* Ext.encode()對應的解碼方法為Ext.decode()。
*
* encode函數的作用是對對象、數組或其他值進行編碼,將對象轉換成JSON字串的形式;
* 因為HTTP協議只能發送字串形式的參數,所以無法將JavaScript中的對象直接傳遞給後台,這就需要編碼;
* 因為HTTP規範規定,HTTP請求只能發送ISO-8859-1編碼的字元,
* 所以像中文這種無法使用ISO-8859-1編碼的字元,還需要先轉換成ISO-8859-1編碼格式才能通過HTTP協議傳輸;
*
* 所以要經過兩次編碼後獲得的最終參數綁定到url上然後傳遞給後台伺服器進行處理:
* url:"http://url.com?json=" + encodeURIComponent(Ext.encode(obj))
* decode()是將json對象解析為字串
* 被解析的字串的格式不能是任意的,它必須符合JSON要求的字串格式。   
eg: function successFn(response,options){
var obj = Ext.decode(response.responseText);//要把JSON資料解析成JavaScript對象,使用Ext.decode函數。
alert(obj.username);
}
function failureFn(response,options){
alert('請求失敗');
}
Ext.Ajax.request({
url:'form.jsp',
success:successFn,
failure:failure,
params:{dsname:'INSERT'}
});
  
通過該對象的responseText或responseXML屬性獲得由伺服器端返回的資料資訊。  
*
*2.Ext.each函數:當需要對數組中的每個元素進行同一種操作
* eg:
* var array = [1,2,3,4];
* var sum = 0;
* Ext.each(array,function(item){
* sum += item;
* });
* alert(sum);
*3.Ext.DomQueryDomQuery的select()函數將接受我們定製的查詢運算式,
* 將HTML中所有滿足條件安的標籤作為結果返回。
*4.標籤提示
*直接在HTML中為元素設定提示資訊。
<input type="button" value="標籤型提示資訊"
ext:qtitle="提示的標題"
ext:qtip="<b><i>提示的內容</i></b><p>下一行內容</p>"/>


這些配置都以ext:作為首碼,
qtitle代表提示標題,
qtip代表提示內容,
這些配置會在初始化時解析到EXT中,並在需要時顯示。

* 初始化先用Ext.QuickTips.init()函數進行初始化  
* 註冊提示 
*
* 全域配置:
* 最簡單的辦法就是利用Ext.apply()函數重新設定QuickTips的預設屬性,如下示:
* Ext.apply(Ext.QuickTips,{
* maxWidth:200,
* minWidth:100,
* showDelay:50,
* dismissDelay:1000,
* hideDelay:500,
* trackMouse:false,
* animate:true
*});
* 下面是這些設定的含義:
* maxWidth和minWidth分別用來設定提示框的最大寬度和最小寬度,這可能會導致提示內容自動換行。
* showDelay表示滑鼠移至上方多久後顯示提示資訊,預設是0.5秒,這裡的時間是以ms為單位。
* dismissDelay表示提示資訊顯示的時間,預設為5秒。如果希望提示框不消失,也可以將dismissDelay直接設定為0。
* hideDelay表示提示資訊從開始消失到完全消失所需要的時間,預設是0.2秒。
* trackMouse這個屬性如果為true,提示視窗彈出來以後還會跟隨滑鼠一起移動。
* autoHide的值一般都是true,它會根據dismissDelay和hideDelay的數值來實現逐漸消隱提示框的效果。
* 這似乎也是一條讓提示框永不消失的捷徑,不過用過以後你就會知道,autoHide:false的結果是即使滑鼠離開了DOM的範圍,提示資訊也不會消失。
* 這個提示資訊會一直掛在頁面上,再也無法去掉。
* animate表示是否使用動畫效果。
*
*個體配置:
*有兩種方式:使用register()和直接寫到HTML裡 ;
*1.使用register()函數時,用到的參數和全域配置一樣
 Ext.QuickTips.register({
taget:'ql',
title:'第一種類型',
text:'從外部註冊到dom中提示資訊',
maxWidth:200,
minWidth:100,
showDelay:50,
dismissDelay:1000,
hidwDelay:500,
trackMouse:false,
autoHide:false,
animate:true
});  

 內建提示功能的EXT組件,只需要在QuickTips之後,再為這些組件設定對應的屬性,就可以直接為它們設定對應的提示資訊。
組件名稱 配置
Ext.tree.TreeNode qtip
Ext.Button tooltip   
*
*6.儲存狀態:Ext.state
*Ext.state.Manager的初始化功能必須在所有代碼的最前面。
* Ext.state.Manager.setProvider(new Ext.state.CookieProvider({}));//保持cookie狀態
*
*7.Ext.util.TaskRunner執行迴圈任務,
*它提供了start()、stop()和StopAll()等方法,用來控制功能函數的啟動和停止,
*或一次性停止所有已經執行的功能函數。 
*  Ext.onReady(function() {
* var text = '';
* var task = {
* run: function() {
* text += new Date().toLocaleString() + "<br />";
* Ext.get('result').update(text);
* },
* interval: 3000
* };
* var taskRunner = new Ext.util.TaskRunner();
* taskRunner.start(task);
* ); 
*
*
* 8.使用Ext.KeyMap為對象綁定按鍵功能
*
* Ext.onReady(function() {
* var keyMap = new Ext.KeyMap('textarea', {
* key: Ext.EventObject.LEFT,
* fn: function(e) {
* keyMap.el.setWidth(keyMap.el.getWidth() - 10);
* }
* });
* Ext.get("dis").on('click', function() {
* keyMap.disable();
* Ext.get('result').update(keyMap.isEnabled());
* });
* Ext.get('en').on('click', function() {
* keyMap.enable();
* Ext.get('result').update(keyMap.isEnabled());
* });
* });
*
*
*                     
*/

step1編寫如下代碼:

<div id="root1">
<span class="span1">span 1</span>
<span class="span2">span 2</span>
<span class="span1">span 3</span>
<span class="span2">span 4</span>
<span class="span1">span 5</span>
</div>
<div id="root2">
<span class="span0">span 0</span>
</div>

step2編寫如下:

Ext.onReady(function(){
Ext.state.Manager.setProvider(new Ext.state.CookieProvider({}));
Ext.QuickTips.init();

var target=Ext.get('root2');
Ext.QuickTips.register({
target:target,
title:'span標籤提示',
text:'從外部註冊到DOM裡的提示資訊'
});

/* var array=[1,2,3,4];
var sum=0;
Ext.each(array,function(item){
sum+=item;
});
alert("sum:"+sum);

Ext.each(array,function(item,index,allArray){

alert("index:"+index);
alert("length:"+allArray.length);

});*/

//用DomQuery獲得頁面上所有的span標籤
var array=Ext.DomQuery.select('span');
Ext.each(array,function(elem){
elem.style.backgroundColor='red';
});

//獲得所有位於id=”root1”的div標籤內的span標籤

var array=Ext.DomQuery.select('div#root1>span');
Ext.each(array,function(elem){
elem.style.backgroundColor='yellow';
});

})

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.