Extjs系列篇(3)—-model資料模型

來源:互聯網
上載者:User

一、Model的兩種建立方式                                                           model就相當於java中的類,下面我們就來用兩種方式來進行建立。 1.define方式建立model:  複製代碼1 Ext.define("person",{2             extend:"Ext.data.Model",3             fields:[4                  {name:'name',type:'auto'},5                  {name:'age',type:'int'},6                  {name:'email',type:'auto'}7             ]8 });複製代碼採用這種方式,第一個參數是model的名稱,需要繼承自Ext.data.Model,同時給定欄位名稱和類型。 2.採用regModel的方式建立model: 複製代碼1 Ext.regModel("user",{2             fields:[3                  {name:'name',type:'auto'},4                  {name:'age',type:'int'},5                  {name:'email',type:'auto'}6             ]7 }); 這種方式比第一種稍許簡潔,不需要繼承,因為它預設返回就是一個model。 二、建立Model的執行個體 建立model的執行個體有3種方式,model就相當於一個class,而model的執行個體就相當於類的對象。 1.new方式建立執行個體: 1 var p = new person({2             name : 'luoxiao',3             age:26,4             email:"3435@12.com"5 });這種建立的方式和我們java中建立對象一樣,比較形象化。 2.create方式建立執行個體: 1 var p1 = Ext.create("person",{2             name : 'luoxiao',3             age:26,4             email:"3435@12.com"5 });第一個參數給定建立的model的名稱,其次給定參數,這樣就可以建立一個執行個體。 3.ModelMgr建立執行個體: var p2 = Ext.ModelMgr.create({            name : 'luoxiao',            age:26,            email:'3435@12.com'},'person');這種方式參數上和第二個方式是相反的。 三、自訂驗證 Ext中給我們提供了一些常用的驗證方式,但是這不能完全滿足我們的需求,我們可以再此基礎上自己進行擴充,自訂驗證的一系列規則。首先我們先擴充validation:   1 Ext.apply(Ext.data.validations,{ 2             age : function(config,value){ 3                 var min = config.min; 4                 var max = config.max; 5                 if(min <= value && value<=max){ 6                     return true; 7                 }else{ 8                     this.ageMessage = this.ageMessage+"應該在["+min+"~"+max+"]"; 9                     return false;10                 }11             },12             ageMessage:'age資料出現了錯誤'13         }); Ext.apply用於實現把一個對象中的屬性應用於另外一個對象中,相當於屬性拷貝。也就是說,我們擴充的age這個屬性的規則將會應用到Ext.data.validations中去,在age的function中,第一個參數是配置的參數屬性,第二個是傳遞的值。下面,我們定義一個model來應用這種驗證:   1 Ext.define("person",{ 2             extend:"Ext.data.Model", 3             fields:[ 4                  {name:'name',type:'auto'}, 5                  {name:'age',type:'int'}, 6                  {name:'email',type:'auto'}, 7             ], 8             validations:[ 9                  {type:"length",field:"name",min:2,max:6},10                  {type:"age",field:"age",min:0,max:150}11             ]12         }); 可以看到,我們對name的length進行了驗證,包括自訂的age,提供了最小值和最大值。 1 var p1 = Ext.create("person",{2             name : 'luoxiao',3             age:-26,4             email:"3435@12.com"5 });這裡建立一個person的執行個體,age為-26,不滿足給定的驗證條件。 1 var errors = p1.validate();2         var errorInfo = [];3         errors.each(function(v){4             errorInfo.push(v.field+" "+v.message);5         });6         alert(errorInfo.join("\n"));驗證後得到錯誤提示。 四、簡單資料代理 什麼是資料代理,資料代理就是來完成資料的CURD。   1 (function(){ 2     Ext.onReady(function(){ 3         Ext.define("person",{ 4             extend:"Ext.data.Model", 5             fields:[ 6                  {name:'name',type:'auto'}, 7                  {name:'age',type:'int'}, 8                  {name:'email',type:'auto'}, 9             ],10             proxy:{11                 type:'ajax',12                 url:'lesson3/person.jsp'13             }14         });15 16         var p = Ext.ModelMgr.getModel("person");17 18         p.load(1, {19             scope: this,20             failure: function(record, operation) {21             },22             success: function(record, operation) {23                 alert(record.data.name);24             },25             callback: function(record, operation, success) {26             }27         });28     });29 })(); 這裡使用的ajax的方式去請求資料,將jsp中的資料請求到然後load進去。 1 <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>2 3       <%4           response.getWriter().write("{name:'uspcat.com',age:26,email:'luoxiao.com'}");5        %>五、model的一對多   1 (function(){ 2     Ext.onReady(function(){ 3         //teacher 4         Ext.regModel("teacher",{ 5             fields:[ 6                {name:'teacherId',type:'int'}, 7                {name:'name',type:'auto'} 8             ], 9             hasMany:{10                 //與誰有關係11                 model:'student',12                 name:'getStudent',13                 filterProperty:'teacher_Id'14             }15         });16 17         //student18         Ext.regModel("student",{19             fields:[20                    {name:'studentId',type:'int'},21                    {name:'name',type:'auto'},22                    {name:'teacher_Id',type:'int'}23             ]24         });25 26         //t.students   可以得到子類的一個store資料集合27 28     });29 })();

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.