昨晚的發現,用現成的jsonstore滿足不了我的需求,因為用jsonstore回來的資料全部用給了頁面渲染,而我比如包含了一些totalCount,serverStatus這些屬性的話,那豈不是沒法映射了?
覺得ext也不會這麼弱智,仔細看了下有一個reader,大概看了下用法,之前的store完全可以有現在的一個proxy和reader對象構成。
之前的store是這麼寫的:
var store = new Ext.data.JsonStore({<br /> url : "servlet/statusServlet",<br /> root : "datas",<br /> fields : ["id", "name", "step1", "step2", "step3", "step4",<br /> "status"]<br /> });
現在這麼寫了:
// 更換成proxy和reader的形式定義store<br />var proxy = new Ext.data.HttpProxy({<br />url : "servlet/statusServlet"<br />});<br />var reader = new Ext.data.JsonReader({<br />status : "status",<br />root : "datas",<br />fields : [{<br />name : "id"<br />}, {<br />name : "name"<br />}, {<br />name : "step1"<br />}, {<br />name : "step2"<br />}, {<br />name : "step3"<br />}, {<br />name : "step4"<br />}, {<br />name : "status"<br />}]<br />});</p><p>var store = new Ext.data.Store({<br />proxy : proxy,<br />reader : reader<br />});
返回的資料是這樣子的:
{"status":"2",datas:[{"id":"1","name":"網站1","step1":"2","step2":"2","step3":"2","step4":"2","status":"2"},{"id":"2","name":"網站2","step1":"2","step2":"2","step3":"2","step4":"2","status":"2"},{"id":"3","name":"網站3","step1":"2","step2":"2","step3":"2","step4":"2","status":"2"},{"id":"4","name":"網站4","step1":"2","step2":"2","step3":"2","step4":"2","status":"2"},{"id":"5","name":"網站5","step1":"2","step2":"1","step3":"0","step4":"0","status":"0"}]}
通過用firebug,對ext的debug發現使用這個方法可以把返回資料中的status的值找到:reader.jsonData.status
我覺得肯定還有更快捷的封裝好的方法,不過目前問題已經解決了,以後遇到了就記住了