A. extjs4和extjs5的區別
升級到5之後, MVVM引入之後又一次簡化了EXT的邏輯操作
B. 本人現在學習ExtJS,誰有ExtJS的入門教程視頻,(清晰版的)適合初次接觸ExtJS的學員使用。
ExtJs視頻教程(上).avi
http://dl.vmall.com/c0ubbdxakh
ExtJs視頻教程1(下).avi
http://dl.vmall.com/c05tezhwon
ExtJs視頻教程10(上).avi
http://dl.vmall.com/c009bcd6dk
ExtJs視頻教程10(下).avi
http://dl.vmall.com/c0fp5fs6oi
ExtJs視頻教程11.avi
http://dl.vmall.com/c0aj02ib0c
ExtJs視頻教程12(上).avi
http://dl.vmall.com/c004973idh
ExtJs視頻教程12(下).avi
http://dl.vmall.com/c001rgrdtm
ExtJs視頻教程13.avi
http://dl.vmall.com/c009ygzh6w
ExtJs視頻教程14.avi
http://dl.vmall.com/c0e0cqlee6
ExtJs視頻教程15.avi
http://dl.vmall.com/c06bm3kof6
ExtJs視頻教程16(上).avi
http://dl.vmall.com/c0gtdad07s
ExtJs視頻教程16(下).avi
http://dl.vmall.com/c09uppmxxg
ExtJs視頻教程17.avi
http://dl.vmall.com/c0x9q2jsy1
ExtJs視頻教程18(上).avi
http://dl.vmall.com/c0r7wsjny8
ExtJs視頻教程18(下).avi
http://dl.vmall.com/c0ljkgvdbt
ExtJs視頻教程19(上).avi
http://dl.vmall.com/c0sxwb3mcs
ExtJs視頻教程19(下).avi
http://dl.vmall.com/c0bne69ab3
ExtJs視頻教程2(上).avi
http://dl.vmall.com/c0rb2nksiv
ExtJs視頻教程2(下).avi
http://dl.vmall.com/c0lntha1ha
ExtJs視頻教程20(上).avi
http://dl.vmall.com/c0xo6ry6uv
ExtJs視頻教程20(下).avi
http://dl.vmall.com/c09bft5oab
ExtJs視頻教程21(上).avi
http://dl.vmall.com/c0e8pmwasl
ExtJs視頻教程21(下).avi
http://dl.vmall.com/c0oc248n7g
ExtJs視頻教程22(上).avi
http://dl.vmall.com/c0x3umxbwa
ExtJs視頻教程22(下).avi
http://dl.vmall.com/c06tuk2ggc
ExtJs視頻教程23.avi
http://dl.vmall.com/c0e7baf0pi
ExtJs視頻教程24(上).avi
http://dl.vmall.com/c0movwp3a4
ExtJs視頻教程24(下).avi
http://dl.vmall.com/c0rg5l5j5b
ExtJs視頻教程25(上).avi
http://dl.vmall.com/c0cov3b0iq
ExtJs視頻教程25(下).avi
http://dl.vmall.com/c0zlis6daw
ExtJs視頻教程26(上).avi
http://dl.vmall.com/c0dkmrgyny
ExtJs視頻教程26(下).avi
http://dl.vmall.com/c0ggz4rsjk
ExtJs視頻教程27(上).avi
http://dl.vmall.com/c0oikptimx
ExtJs視頻教程27(下).avi
http://dl.vmall.com/c0hf8mkvz8
ExtJs視頻教程28(上).avi
http://dl.vmall.com/c0u1dtnapu
ExtJs視頻教程28(下).avi
http://dl.vmall.com/c03aqkretd
ExtJs視頻教程29(上).avi
http://dl.vmall.com/c0iba3xahp
ExtJs視頻教程29(下).avi
http://dl.vmall.com/c0eksgrye9
ExtJs視頻教程3(上).avi
http://dl.vmall.com/c0umiba9au
ExtJs視頻教程3(下).avi
http://dl.vmall.com/c0ayfugdru
ExtJs視頻教程30(上).avi
http://dl.vmall.com/c0b8eyl7tq
ExtJs視頻教程30(下).avi
http://dl.vmall.com/c0wmn2dn4p
ExtJs視頻教程4.avi
http://dl.vmall.com/c0aqzm9bdq
ExtJs視頻教程5(上).avi
http://dl.vmall.com/c0phusez1v
ExtJs視頻教程5(下).avi
http://dl.vmall.com/c0k8cbyyb0
ExtJs視頻教程6(上).avi
http://dl.vmall.com/c0cakxbmae
ExtJs視頻教程6(下).avi
http://dl.vmall.com/c096aiackr
ExtJs視頻教程7(上).avi
http://dl.vmall.com/c0l2yl1m2l
ExtJs視頻教程7(下).avi
http://dl.vmall.com/c05n9sqsp1
ExtJs視頻教程8.avi
http://dl.vmall.com/c0x692rjm6
ExtJs視頻教程9(上).avi
http://dl.vmall.com/c0mmjhyylb
ExtJs視頻教程9(下).avi
http://dl.vmall.com/c0wkfdosff
C. spring mvc怎麼和extjs4交互
注意點一:Extjs的store層
Ext.define('AM.store.Students', {
extend: 'Ext.data.Store',
model: 'AM.model.Student',
//ht/docs./ext-js/4-1/#!/example/restful/restful.html
autoLoad: true,//store.load();
autoSync: true,//需要同步
pageSize:3, //每頁顯示的記錄行數
listeners: {
write: function(store, operation){
var record = operation.getRecords()[0],
name = Ext.String.capitalize(operation.action),
verb;
if (name == 'Destroy') {
record = operation.records[0];
verb = 'Destroyed';
} else {
verb = name + 'd';
}
console.log(Ext.String.format("{0} Student: {1}", verb, record.getId()));
},
exception: function(proxy, type, action, options, res){
Ext.Msg.show({
title: 'ERROR',
msg: res.message,
icon: Ext.MessageBox.ERROR,
buttons: Ext.Msg.OK
});
}
}
});
注意點二:Extjs的model層
var myjson = Ext.create('Ext.data.writer.Json', {
encode: true,
writeAllFields: true
});
Ext.namespace("AM.model");
//伺服器無需傳輸所有欄位
Ext.define('AM.model.Student', {
extend: 'Ext.data.Model',
//http://archive.cnblogs.com/a/2571796/
statics: {//注意不是static
addRecord : function(store){
var fields = this.getFields();
store.each(function(record) {
fields[fields.length] = {
name: record.get('fieldKey'),
type: record.get('dataType')
};
});
}
},
fields: [
//需要與java注入類的各個欄位類型相同,否則不能成功創建注入對象
{name: 'student_id',type:'int'},
{name: 'innoGroupId',type:'int'},
{name: 'username'},
{name: 'password'},
{name: 'name'},
{name: 'email'},
{name: 'unikey'},
{name: 'mobile'},
{name: 'phone'},
{name: 'type'},
{name: 'innoGroupAccepted', type: 'boolean', defaultValue: false},
{name: 'applyConfirmed', type: 'boolean', defaultValue: false},
{name: 'fileConfirmed',type: 'boolean', defaultValue: false},
{name: 'payConfirmed',type: 'boolean', defaultValue: false},
{name: 'examConfirmed', type: 'boolean', defaultValue: false},
{name: 'accepted',type: 'boolean', defaultValue: false},
//append
{name: 'namePy'},
{name: 'sex', type: 'boolean',},
{name: 'certificateType'},
{name: 'certificateId'},
{name: 'nativePlace'},
{name: 'birthdate'},
{name: 'birthPlace'},
{name: 'homePlace'},
{name: 'archivePlace'},
{name: 'rewardPunishment'},
{name: 'household'},
{name: 'college'},
{name: 'major'},
{name: 'ethnic'},
{name: 'graateTime'},
{name: 'bachelorId'},
{name: 'studyNumber'},
{name: 'political'},
{name: 'degree'},
{name: 'english',type:'int'},
{name: 'politics',type:'int'},
{name: 'math',type:'int'},
{name: 'cs',type:'int'},
{name: 'total',type:'int'},
{name: 'remark'},
],
idProperty: 'student_id',
proxy : {
type: 'rest',
url: 'student',
reader :
{
type : 'json',
root : 'data',
successProperty : 'success',
totalProperty: 'total'
},
writer :
{
type : 'json',
//encode: true,extjs-4中的Ext.data.writer.Writer沒有該屬性
writeAllFields: true
}
}
});
注意點二.五:Extjs的model層
var sm = Ext.create('Ext.selection.CheckboxModel');
Ext.define('AM.view.student.List' ,{
extend: 'Ext.grid.Panel',
alias : 'widget.studentList',
//title : 'All student',
store: 'Students',
selModel: sm,
dockedItems : [{
xtype : 'toolbar', dock : 'top',
items : [{
text : '添加',
itemId: 'addButton',
iconCls : 'add',
action: 'add'
}, '-', {
text : '刪除',
itemId: 'removeButton',
iconCls : 'remove',
action: 'remove' ,
disabled : true
},
]
}, {
dock : 'bottom',
xtype : 'pagingtoolbar',
id : 'pt',
store : 'Students',//Ext.getStore('Students'), // 分頁store與grid一致
displayInfo : true,
}],
initComponent: function() {
this.columns = [//需要將columns寫出來
{header: '編號', dataIndex: 'student_id', width:35},
{header: '姓名', dataIndex: 'name', width:60,flex:1},
{header: '准考證號', dataIndex: 'unikey', width:80,flex:1},
{header: '考生類別', dataIndex: 'type', width:60,flex:1},
{header: '性別', dataIndex: 'sex', width:35},
{header: '畢業院校', dataIndex: 'college', width:120,flex:1},
{header: '專業', dataIndex: 'major', width:100,flex:1},
{header: '民族', dataIndex: 'ethnic', width:40},
{header: '畢業時間', dataIndex: 'graateTime', width:60,flex:1},
{header: '英語', dataIndex: 'english', width:35},
{header: '政治', dataIndex: 'politics', width:35},
{header: '數學', dataIndex: 'math', width:35},
{header: '綜合', dataIndex: 'cs', width:35},
{header: '總分', dataIndex: 'total', width:50},
];
//CARE store必須要初始化
var store = Ext.getStore('init.AutoTables');
console.log(store);
console.log('this.columns.length = '+this.columns.length);
console.log(this.columns);
var columns = this.columns;//此處位引用賦值
var me = this;
//TODO 必須使得該函數運行結束才可執行後面的語句
store.load({
//scope: this,
callback: function(records, options, success){
if(success){
store.each(function(record) {
//console.log(columns.length);
columns.push({
header: record.get('header'),
dataIndex: record.get('dataIndex'),
width : record.get('width')
});
});
console.log('columns.length = '+columns.length);
console.log(columns);
me.columns = columns;
console.log('memem.length = '+ me.columns.length);
console.log(me.columns);
console.log(me);
//me.callParent(arguments);//Uncaught TypeError: Cannot read property 'superclass' of undefined
}
},
});
console.log('out initComponent 2150');
this.callParent(arguments);
}
});
注意點三:後台Spring MVC中Json數據處理
package com.enrol.util;
import java.security.MessageDigest;
import java.util.HashMap;
import java.util.Map;
public class DataUtil {
public static Map<String, Object> getMap(Object contact,int total) {
Map<String, Object> modelMap = new HashMap<String, Object>(3);
System.out.println("OK!!!!!");
modelMap.put("data", contact);
modelMap.put("success", true);
modelMap.put("total", total);
return modelMap;
}
public static Map<String, Object> getModelMapError(String msg) {
Map<String, Object> modelMap = new HashMap<String, Object>(2);
modelMap.put("message", msg);
modelMap.put("success", false);
return modelMap;
}
public static String MD5(String s) {
char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'a', 'b', 'c', 'd', 'e', 'f' };
try {
byte[] strTemp = s.getBytes();
MessageDigest mdTemp = MessageDigest.getInstance("MD5");
mdTemp.update(strTemp);
byte[] md = mdTemp.digest();
int j = md.length;
char str[] = new char[j * 2];
int k = 0;
for (int i = 0; i < j; i++) {
byte b = md[i];
str[k++] = hexDigits[b & 0xf];
}
return new String(str);
} catch (Exception e) {
return null;
}
}
}
注意點四:Spring MVC中 Controller層用到分頁的方法:
@RequestMapping(method = RequestMethod.GET)
public @ResponseBody
Map<String, ? extends Object> view(int page,int start,int limit) throws Exception {
System.out.println("get");
System.out.println("-----------------------------------");
System.out.println("page=="+page);
System.out.println("start=="+start);
System.out.println("limit=="+limit);//pagesize
System.out.println("-----------------------------------");
page = (page-1)*limit;
HashMap<String,Integer> maps = new HashMap<String, Integer>();
maps.put("page", page);
maps.put("limit", limit);
try {
int total = studentMapper.getTotal();
List<HashMap<String, ?>> list = studentMapper.getStudents(maps);
System.out.println("length= " + list.size());
for (HashMap<String, ?> obj : list) {
System.out.println("map: " + obj);
}
return DataUtil.getMap(list,total);
} catch (Exception e) {
e.printStackTrace();
return DataUtil
.getModelMapError("Error retrieving students from database.");
}
}
D. EXTJS4怎麼用我是新人,將example粘貼到WEBROOT下,無法使用。請問我需要哪些其他准備工作,想看演示
將幾個必須的包放到webroot下面。如圖
頁面上引入這幾個js
<linkrel="stylesheet"type="text/css"href="<%=basePath%>ext4/resources/css/ext-all.css">
<scripttype="text/javascript"src="<%=basePath%>ext4/bootstrap.js"></script>
<scripttype="text/javascript"src="<%=basePath%>ext4/ext-lang-zh_CN.js"></script>
應該就OK了
E. extjs4 畫線圖
除了它們共用的坐標外,另外的一個軸上確實不能像柱狀圖放到一個數組中那樣方便了,必須在series中一個一個的繪制。
series:[
{
type:'line',
axis:'left',
xField:'months',
yField:['a']
},
{
type:'line',
axis:'left',
xField:'months',
yField:['b']
},
{
type:'line',
axis:'left',
xField:'months',
yField:['c']
}
]
F. extjs4以上引入js需要注意什麼
1、在引入包的時候是順序的; href="text/,比如國際化沒有用;/
src="javascript"script>/ext/js/.js;/.js"
<text/js//>script
type="link rel="<%=path%>
<stylesheet"javascript"。
2、不然會有問題;<<
src="<.css"< type="script>text/css"bootstrap;text/.js;/script
type=".js"js/
src=">css/.js"ext-all;
3、最後加上自己的js;%=path%>>ExtJs4沒有了之前的ext-base;ext/、
<script
type="/ext-all;ext/javascript"%=path%>
<!
;>ext/。取代的是bootstrap;<ext-lang-zh_CN;script>%=path%>/<
G. 本人extjs入門,現在正在學慣用Extjs4,我想問一下extjs怎麼接收解析json數據
JSON可以理解為JavaScript的對象序列化的字元串, 你看下JSON的內容, 會發現和代碼中寫的對象字面量基本一樣, 所以使用eval方法即可將JSON轉換為對象.
Ext僅僅是簡單的封裝eval方法, 以適應不同標準的JSON
源代碼:
Ext.util.JSON.decode = function(json){
return eval('(' + json + ')');
};
你可以自己alert出來看
//示例
Ext.onReady(function() {
Ext.Ajax.request({
url: 'getmsg.action?user=1',
method: 'GET',
success: function(resp, options) {
//標准JSON字元串 '{"data": [{"msg":"abcd"}]}'
var jsonObj = Ext.util.JSON.decode(resp.responseText);
//顯示模態提示框
Ext.Msg.alert('title', jsonObj.data[0].msg, function(btn){
//Ext的模態窗口僅僅是屏蔽操作, 並不阻塞線程, js也沒有線程, 這點非常重要
//提示框的按鈕事件回調
alert(btn); //後執行
});
alert(1); //先執行
}
//failure: function() {...} //可選的
});
});
Ext的ApiDoc做得非常好, 對學習有很大的幫助. 千萬不要看一些所謂的中文版, 有很多機器翻譯不說, 還有很多未校對的錯誤.
另: 學習ExtJS要掌握閉包的概念, 這個是js一個非常重要的特性, Ext使用該特性模擬了繼承及封裝, 在一定程度上實現了面向對象編程. 當然你也可以無視Ext的繼承機制, 使用js本身的原型繼承(prototype)
H. extjs4.0.7 環境配置怎麼搭建 越詳細越好 有加分
將整個ExtJs4.0拷入項目中,然後載入,
<link rel="stylesheet" type="text/css" href="extjs4/resources/css/ext-all.css"/> //樣式文件
<script src="extjs4/ext-all-debug.js"></script> //主文件
<script src="extjs4/ext-lang-zh_CN.js"></script> //中文包