2
我想了解以下場景中的範圍。當撥打searchTerms
時,this
下的scope:this
是指searchTerms
功能,而不是面板本身。這似乎與我從其他例子中觀察到的不同。我可以知道我犯了什麼錯誤嗎?extjs按鈕範圍
function searchTerms(){
var searchGrid = new Ext.grid.GridPanel({
});
var searchPanel = new Ext.form.FormPanel({
region: 'south',
height:150,
items:[
{
xtype: 'textfield',
fieldLabel: 'Keywords',
},{
xtype: 'textfield',
fieldLabel: 'Label',
},{
xtype: 'datefield',
fieldLabel: 'Valid till'
},new Ext.Button({
text: 'crawl',
scope: this,
handler: function(b,e){
Ext.Ajax.request({^M
url: '/discovery/tsearch',^M
params: {^M
keywords: this.items[0].getValue(),
label: this.items[1].getValue(),
valid: this.items[2].getValue(),
},
});
}
}),],
});
var regionPanel = new Ext.Panel({
title: 'search',
layout: 'border',
items: [searchPanel, searchGrid]
});
return regionPanel;
}
可我知道爲什麼我的版本將無法正常工作? – goh 2011-12-21 11:31:49
這是一個範圍問題,'this'是searchTerm對象,當您創建按鈕而不是searchPanel時,您必須考慮代碼在第一次執行時的分數,而不是事件發生時的分數 – RageZ 2011-12-21 11:33:17
區別在於按鈕被*添加到searchPanel,範圍被設置爲searchPanel。爲了能夠將範圍設置爲searchPanel,必須首先定義searchPanel - 當您在searchPanel內創建按鈕* inline *時,這是不可能的。這是否使感覺? – Chau 2011-12-21 11:35:49