實際開發中的一些小問題,覺得還行,轉載下
[color=blue][size=medium]下面是開發過程中做的一些總結,多是問題的應對:
1、引入js和css檔案時注意檔案的路徑問題;
2、匯入ext-base.js後注意設定Ext.BLANK_IMAGE_URL的值(透明圖片s.gif位置);
3、IE提示“缺少識別符號,字串或數字”錯誤,為配置時 “}”前多了逗號,且所處位置在Ext.onReady在同一個js檔案
4、IE提示變數未定義,一般為有語法錯誤,如多餘了”,”等
5、“無效字元”錯誤,可能是將”,”打成了”,”了
6、”缺少’}'”錯誤,問題是多個引數之間缺少了”,”導致
7、載入檔案較多時,使用ExtJs可做一個載入提示
8、ext-base.js引入必須在ext-all.js之前
9、Ext.state.Manager.setProvider(new Ext.state.CookieProvider());
初始化Ext狀態管理器,在Cookie中記錄使用者的操作狀態,如果不啟用,象重新整理時就不會儲存當前的狀態,而是重新載入
如果視窗中有用可拖動皮膚的話,你在拖動後如果啟動了Ext.state.Manager.setProvider(new Ext.state.CookieProvider()),就算重新整理後皮膚仍然會在你拖動後的位置。如果不啟用的話是不是就會按照預設的排列方式排列
10、對瀏覽器禁用javascript的提示
<noscript class=”noticeDialog”><div>
<p>請開啟瀏覽器的 JavaScript 支援!否則不能正常使用本系統<br>啟用之後,重新整理頁面即可</p>
</div></noscript>
11、TabPanel中放置複雜元件時,注意需要設定TabPanel的Width
12、extjs中文字型在firefox裡顯示偏小的問題,解決方法是再建立一個名為ext-patch.css的css檔案,內容見http://www.phpchina.com/html/78/78-28624.html
13、中文化問題,在 ext-all.js 後面,掛上 ext-lang-zh_CN.js 即可,如:
<script type=”text/javascript” src=”<%=contextPath%>/public/js/ext-base.js”></script>
<script type=”text/javascript” src=”<%=contextPath%>/public/js/ext-all.js”></script>
<script type=”text/javascript” src=”<%=contextPath%>/public/js/ext-lang-zh_CN.js”></script>
14、ComboBox載入後自動選擇第一項
var pn_zlfx_cbb_grade = new Ext.form.ComboBox({
displayField: ‘name’,
valueField: ‘id’,
triggerAction: ‘all’,
width: 80,
lazyInit: false,
mode: ‘local’,
editable: false,
forceSelection: true,
store: new Ext.data.JsonStore({
url: SITE_URL+’get_zlfx.asp?grade_id=0′,
fields: ['id', 'name'],
root: ‘data’,
autoLoad: true,
listeners:{
load: function(store, records, options){
if (records.length != 0){
pn_zlfx_cbb_grade.setValue(records[0].data.id);
}
}
}
})
15、JsonStore排序:sortInfo: {field: “name”, direction: “ASC|DESC”}
16、Extjs類的配置屬性是不能被動態配置的,就如同上面這樣的寫法,當然,可能可以通過呼叫或設定某些公共的方法和屬性來改變這些配置屬性,但不能直接設定.
17、xhtml strict模式:<!DOCTYPE html
PUBLIC “-//W3C//DTD XHTML 1.0 Strict//EN”
“http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd“>
18、Html文件<script>標籤中的js程式碼放在<![CDATA[和]]>之間,使xhtml驗證時忽略中間的內容
19、JsonStore新增Record
var orgaListRecord = new Ext.data.Record.create([
{name: 'id_combo1'},
{name : 'name'}
]);
var orgaList = new Ext.data.JsonStore({
url: ‘./get_organisme.php’,
root: ‘orga’,
fields: orgaListRecord
});
orgaList.add([
new orgaListRecord({'id_combo1': 3,'name': 'Other'})
]);
orgaList.load({add: true}); // instead of orgaList.load();
20、資料載入前須判斷是否有資料:
if (typeof(pn_zlfx_gp_mark_subjects)==”undefined” || typeof(pn_zlfx_gp_mark_subjects.data)==”undefined”)
pn_zlfx_gp_setting.store.removeAll();
else
pn_zlfx_gp_setting.store.loadData(pn_zlfx_gp_mark_subjects);
21、儘量將處理過程放在關鍵位置,減少重複程式碼
22、預設排序方式:sortDir
23、伺服器返回的JSON資料欄位用’或”括起來,避免與js關鍵詞與保留字衝突
24、Ext.encode()出錯,問題是json資料有問題
25、store增加totalProperty配置,可用store.getCount()獲取
26、store中文排序異常問題,通過過載Ext.data.Store.prototype.applySort函式來解決
27、store.load()是非同步操作,如果希望在資料載入後再執行操作,可以通過以下方式執行:
store.load({
callback: function (records) {
alert(store.getTotalCount());
}
});
28、 EXTJS items不能顯示問題收藏
有時經常碰到新增items時不能顯示,鬱悶不得行~~
經不斷測試可能有如下幾個方法可以解決:
1)試新增:Layout:’fit’
2)若xtype為’panel’,可試新增:
listeners: {
‘activate’: function(p) {p.doLayout();}
,single:true
}
3)若xtype為’tabpanel’,可試新增:
layoutOnTabChange:true
總的來說是cmp.doLayout()問題….
29、Ext.ajax.request增加form和isUpload:true時,請求方式為enctype=”multipart/form-data”傳值,asp中需特別解析
30、ComboBox增加mode:’local’配置來手動控制資料載入,同時可防止資料的二次載入
31、要使ComboBox手動輸入的值能得到提交,需要增加ComboBox的Blur事件處理函式
onComboBoxBlur: function(field){
field.setValue(field.getRawValue());
}
32、Firebug顯示所有Extjs元件事件
Ext.util.Observable.prototype.fireEvent = Ext.util.Observable.prototype.fireEvent.createInterceptor(function() {
console.log(arguments);
return true;
});
33、工具欄Toolbar內容的增刪
var tb = this.gp.getTopToolbar();
// 刪除工具欄內容
var i = tb.items.getCount();
while(i){
Ext.fly(tb.items.get(i).getEl()).remove();
tb.items.removeAt(i);
}
// 重新新增工具欄內容
tb.add(‘包括(’, this.cbgType, ‘)’);
34、Ext.ux.form.LovCombo不能設定forceSelection為true,否則當控制元件失去焦點時顯示值會清空
35、IE下Ext.GridPanel的autoWidth或者layout:’fit’會將寬度拉的很長的解決辦法:
var grid = new Ext.grid.GridPanel({
bodyStyle:’width:100%’,
autoWidth:true,
…….
});
36、Ext.GridPanel加了CellSelection後,如設定viewConfig:{forceFit:true}點選單元格會導致表格跳動
解決方案:http://www.extjs.com/forum/showthread.php?p=282928#post282928
37、ComboBox執行Filter第一次無效的解決是 增加lastQuery:” 配置
38、Panel內部高度自適應+自動出現滾動條,增加以下配置
,autoScroll: true
,style:”height:100%;”
,bodyStyle:”height:100%;”
39、某些情況下TabPanel里載入iframe第一次不顯示,可在panel顯示後重新設定一下iframe的src強制載入一遍 [/size][/color]
1、引入js和css檔案時注意檔案的路徑問題;
2、匯入ext-base.js後注意設定Ext.BLANK_IMAGE_URL的值(透明圖片s.gif位置);
3、IE提示“缺少識別符號,字串或數字”錯誤,為配置時 “}”前多了逗號,且所處位置在Ext.onReady在同一個js檔案
4、IE提示變數未定義,一般為有語法錯誤,如多餘了”,”等
5、“無效字元”錯誤,可能是將”,”打成了”,”了
6、”缺少’}'”錯誤,問題是多個引數之間缺少了”,”導致
7、載入檔案較多時,使用ExtJs可做一個載入提示
8、ext-base.js引入必須在ext-all.js之前
9、Ext.state.Manager.setProvider(new Ext.state.CookieProvider());
初始化Ext狀態管理器,在Cookie中記錄使用者的操作狀態,如果不啟用,象重新整理時就不會儲存當前的狀態,而是重新載入
如果視窗中有用可拖動皮膚的話,你在拖動後如果啟動了Ext.state.Manager.setProvider(new Ext.state.CookieProvider()),就算重新整理後皮膚仍然會在你拖動後的位置。如果不啟用的話是不是就會按照預設的排列方式排列
10、對瀏覽器禁用javascript的提示
<noscript class=”noticeDialog”><div>
<p>請開啟瀏覽器的 JavaScript 支援!否則不能正常使用本系統<br>啟用之後,重新整理頁面即可</p>
</div></noscript>
11、TabPanel中放置複雜元件時,注意需要設定TabPanel的Width
12、extjs中文字型在firefox裡顯示偏小的問題,解決方法是再建立一個名為ext-patch.css的css檔案,內容見http://www.phpchina.com/html/78/78-28624.html
13、中文化問題,在 ext-all.js 後面,掛上 ext-lang-zh_CN.js 即可,如:
<script type=”text/javascript” src=”<%=contextPath%>/public/js/ext-base.js”></script>
<script type=”text/javascript” src=”<%=contextPath%>/public/js/ext-all.js”></script>
<script type=”text/javascript” src=”<%=contextPath%>/public/js/ext-lang-zh_CN.js”></script>
14、ComboBox載入後自動選擇第一項
var pn_zlfx_cbb_grade = new Ext.form.ComboBox({
displayField: ‘name’,
valueField: ‘id’,
triggerAction: ‘all’,
width: 80,
lazyInit: false,
mode: ‘local’,
editable: false,
forceSelection: true,
store: new Ext.data.JsonStore({
url: SITE_URL+’get_zlfx.asp?grade_id=0′,
fields: ['id', 'name'],
root: ‘data’,
autoLoad: true,
listeners:{
load: function(store, records, options){
if (records.length != 0){
pn_zlfx_cbb_grade.setValue(records[0].data.id);
}
}
}
})
15、JsonStore排序:sortInfo: {field: “name”, direction: “ASC|DESC”}
16、Extjs類的配置屬性是不能被動態配置的,就如同上面這樣的寫法,當然,可能可以通過呼叫或設定某些公共的方法和屬性來改變這些配置屬性,但不能直接設定.
17、xhtml strict模式:<!DOCTYPE html
PUBLIC “-//W3C//DTD XHTML 1.0 Strict//EN”
“http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd“>
18、Html文件<script>標籤中的js程式碼放在<![CDATA[和]]>之間,使xhtml驗證時忽略中間的內容
19、JsonStore新增Record
var orgaListRecord = new Ext.data.Record.create([
{name: 'id_combo1'},
{name : 'name'}
]);
var orgaList = new Ext.data.JsonStore({
url: ‘./get_organisme.php’,
root: ‘orga’,
fields: orgaListRecord
});
orgaList.add([
new orgaListRecord({'id_combo1': 3,'name': 'Other'})
]);
orgaList.load({add: true}); // instead of orgaList.load();
20、資料載入前須判斷是否有資料:
if (typeof(pn_zlfx_gp_mark_subjects)==”undefined” || typeof(pn_zlfx_gp_mark_subjects.data)==”undefined”)
pn_zlfx_gp_setting.store.removeAll();
else
pn_zlfx_gp_setting.store.loadData(pn_zlfx_gp_mark_subjects);
21、儘量將處理過程放在關鍵位置,減少重複程式碼
22、預設排序方式:sortDir
23、伺服器返回的JSON資料欄位用’或”括起來,避免與js關鍵詞與保留字衝突
24、Ext.encode()出錯,問題是json資料有問題
25、store增加totalProperty配置,可用store.getCount()獲取
26、store中文排序異常問題,通過過載Ext.data.Store.prototype.applySort函式來解決
27、store.load()是非同步操作,如果希望在資料載入後再執行操作,可以通過以下方式執行:
store.load({
callback: function (records) {
alert(store.getTotalCount());
}
});
28、 EXTJS items不能顯示問題收藏
有時經常碰到新增items時不能顯示,鬱悶不得行~~
經不斷測試可能有如下幾個方法可以解決:
1)試新增:Layout:’fit’
2)若xtype為’panel’,可試新增:
listeners: {
‘activate’: function(p) {p.doLayout();}
,single:true
}
3)若xtype為’tabpanel’,可試新增:
layoutOnTabChange:true
總的來說是cmp.doLayout()問題….
29、Ext.ajax.request增加form和isUpload:true時,請求方式為enctype=”multipart/form-data”傳值,asp中需特別解析
30、ComboBox增加mode:’local’配置來手動控制資料載入,同時可防止資料的二次載入
31、要使ComboBox手動輸入的值能得到提交,需要增加ComboBox的Blur事件處理函式
onComboBoxBlur: function(field){
field.setValue(field.getRawValue());
}
32、Firebug顯示所有Extjs元件事件
Ext.util.Observable.prototype.fireEvent = Ext.util.Observable.prototype.fireEvent.createInterceptor(function() {
console.log(arguments);
return true;
});
33、工具欄Toolbar內容的增刪
var tb = this.gp.getTopToolbar();
// 刪除工具欄內容
var i = tb.items.getCount();
while(i){
Ext.fly(tb.items.get(i).getEl()).remove();
tb.items.removeAt(i);
}
// 重新新增工具欄內容
tb.add(‘包括(’, this.cbgType, ‘)’);
34、Ext.ux.form.LovCombo不能設定forceSelection為true,否則當控制元件失去焦點時顯示值會清空
35、IE下Ext.GridPanel的autoWidth或者layout:’fit’會將寬度拉的很長的解決辦法:
var grid = new Ext.grid.GridPanel({
bodyStyle:’width:100%’,
autoWidth:true,
…….
});
36、Ext.GridPanel加了CellSelection後,如設定viewConfig:{forceFit:true}點選單元格會導致表格跳動
解決方案:http://www.extjs.com/forum/showthread.php?p=282928#post282928
37、ComboBox執行Filter第一次無效的解決是 增加lastQuery:” 配置
38、Panel內部高度自適應+自動出現滾動條,增加以下配置
,autoScroll: true
,style:”height:100%;”
,bodyStyle:”height:100%;”
39、某些情況下TabPanel里載入iframe第一次不顯示,可在panel顯示後重新設定一下iframe的src強制載入一遍 [/size][/color]
相關文章
- JF實際開發中的問題
- Web 開發中的檔案下載問題Web
- 開發中的一些小事
- Android日常開發遇到的那些小問題Android
- 小程式專案中的一些小問題
- vue工作中遇到的一些小問題Vue
- 小程式開發所遇的問題以及一些小細節
- 分享Mac下開發中使用的一些小技巧Mac
- php做EXCEL資料匯出匯入開發的一些小問題PHPExcel
- Leetcode刷題中關於java的一些小問題LeetCodeJava
- 一些小問題彙總
- 關於Redis的一些小問題Redis
- 教你如何解決PostgreSQL Array使用中的一些小問題SQL
- 實際專案中遇到的問題
- 總結下 javascript 中的一些小技巧JavaScript
- 多執行緒,你覺得你安全了?(執行緒安全問題)執行緒
- Git 實際開發中的使用Git
- Android studio遇到的一些小問題Android
- 開發小程式的一些小經驗
- iOS 開發的一些小技巧篇(1)iOS
- iOS 開發的一些小技巧篇(2)iOS
- iOS 開發的一些小技巧篇(3)iOS
- 開發Web應用程式中Cookie使用的問題 (轉)WebCookie
- 下載的 Laravel ?問題Laravel
- 遊戲開發中不同時區下的時間問題遊戲開發
- 一鍵解決App應用分發下載問題APP
- Flutter實戰之開發問題集(一)Flutter
- 一個沉重的問題:軟體開發到底還有價值嗎?
- iOS 開發中遇到的一些證書問題iOS
- 關於資料庫連線的一些小問題資料庫
- 並查集在實際問題中的應用並查集
- MySQL實際應用中遇到的鎖問題薦MySql
- MyBatis之五_開發中的問題MyBatis
- OpenStack 介面開發中的排序問題排序
- MERGE開發中遇到的問題
- Flutter 混合開發實戰問題記錄(四)編譯執行時問題的一些總結Flutter編譯
- Java的國際化問題 (轉)Java
- 版主,下載學習中,出現問題