1. 程式人生 > >Ext4.2中的Ext.data.Model和Ext.data.Store的區別

Ext4.2中的Ext.data.Model和Ext.data.Store的區別

一、Ext.data.Model

       (1)Model代表應用程式管理的一些物件。例如,我們可能會為 我們想在系統中建模的現實世界中的一些物體像使用者、產品和汽車等定義一個Model。這些Model在 模型管理器中註冊,被Store使用, 而這些Store又被許多 Ext中許多與資料繫結的元件使用.。

      Model定義為欄位、任意方法和與模型相關的屬性的集合。例如:

[javascript] view plain copy
  1. Ext.define('User', {  
  2.     extend: 'Ext.data.Model',  
  3.     fields: [  
  4.         {name: 'name'
    ,  type: 'string'},  
  5.         {name: 'age',   type: 'int', convert: null},  
  6.         {name: 'phone', type: 'string'},  
  7.         {name: 'addree', type: 'string'}  
  8.     ],  
  9.     changeName: function() {  
  10.         var oldName = this.get('name'),  
  11.             newName = oldName + " 六指琴魔";  
  12.         this.set('name'
    , newName);  
  13.     }  
  14. });  

   建立模型User的例項並呼叫我們定義的任何模型的邏輯:

[javascript] view plain copy
  1. var user = Ext.create('User', {  
  2.     name : '六指琴魔',  
  3.     age  : 26,  
  4.     phone: '13800138000'
  5. });  
  6. user.changeName();  
  7. user.get('name');   
(2)Model有內建的驗證支援, 通過執行Ext.data.validations中的驗證器函式給模型新增驗證非常簡單,例如:[javascript] view plain
 copy
  1. Ext.define('User', {  
  2.     extend: 'Ext.data.Model',  
  3.     fields: [  
  4.         {name: 'name',     type: 'string'},  
  5.         {name: 'age',      type: 'int'},  
  6.         {name: 'phone',    type: 'string'},  
  7.         {name: 'gender',   type: 'string'},  
  8.         {name: 'username', type: 'string'},  
  9.         {name: 'alive',    type: 'boolean', defaultValue: true}  
  10.     ],  
  11.     validations: [  
  12.         {type: 'presence',  field: 'age'},  
  13.         {type: 'length',    field: 'name',     min: 2},  
  14.         {type: 'inclusion', field: 'gender',   list: ['Male''Female']},  
  15.         {type: 'exclusion', field: 'username', list: ['Admin''Operator']},  
  16.         {type: 'format',    field: 'username', matcher: /([a-z]+)[0-9]{2,3}/}  
  17.     ]  
  18. });  

通過呼叫validate函式能簡單執行驗證, 返回一個Ext.data.Errors 物件:
[javascript] view plain copy
  1. var instance = Ext.create('User', {  
  2.     name: '好原始碼',  
  3.     gender: 'Male',  
  4.     username: '六指琴魔'
  5. });  
  6. var errors = instance.validate();  

二、Ext.data.Store

      (1)Store 大意是: 倉庫、儲存的意思. Store類封裝了一個客戶端快取,用於儲存 Model 物件. Stores 通過一個代理 Proxy 來載入資料, 並提供函式來 排序, 過濾 以及查詢 內部所包含的 model 例項.
       建立Store非常簡單 - 我們只需要傳入 Model 以及用來載入/儲存 資料的Proxy作為配置項即可:

[javascript] view plain copy
  1. // 建立一個store要使用的 model
  2. Ext.define('User', {  
  3.     extend: 'Ext.data.Model',  
  4.     fields: [  
  5.         {name: 'firstName', type: 'string'},  
  6.         {name: 'lastName',  type: 'string'},  
  7.         {name: 'age',       type: 'int'},  
  8.         {name: 'eyeColor',  type: 'string'}  
  9.     ]  
  10. });  
  11. var myStore = Ext.create('Ext.data.Store', {  
  12.     model: 'User',  
  13.     proxy: {  
  14.         type: 'ajax',  
  15.         url: '/users.json',  
  16.         reader: {  
  17.             type: 'json',  
  18.             root: 'users'
  19.         }  
  20.     },  
  21.     autoLoad: true
  22. });  

(2)內聯資料

   Store 也可以載入內部指定的資料. 在內部, Store 將我們傳入的物件作為data,轉換為Model例項。 示例如下:

[javascript] view plain copy
  1. Ext.create('Ext.data.Store', {  
  2.     model: 'User',  
  3.     data : [  
  4.         {firstName: 'Ed',    lastName: 'Spencer'},  
  5.         {firstName: 'Tommy', lastName: 'Maintz'},  
  6.         {firstName: 'Aaron', lastName: 'Conran'},  
  7.         {firstName: 'Jamie', lastName: 'Avins'}  
  8.     ]  
  9. });  

(3)過濾與排序

    Store 可以進行排序和過濾 - 兩種操作既可以在本地執行,也可以遠端執行. 排序 sorters 和 過濾 filters 都是在 MixedCollection 例項內部執行的, 這種封裝使得容易管理和使用. 通常在 Store的配置項中指定 sorters 和 filters 就可以了,當然也可以呼叫 sort 和 filter 方法:

[javascript] view plain copy
  1. var store = Ext.create('Ext.data.Store', {  
  2.     model: 'User',  
  3.     sorters: [{  
  4.         property: 'age',  
  5.         direction: 'DESC'
  6.     }, {  
  7.         property: 'firstName',  
  8.         direction: 'ASC'
  9.     }],  
  10.     // 必須包含字母E或者d
  11. 相關推薦

    Ext4.2Ext.data.ModelExt.data.Store區別

    一、Ext.data.Model       (1)Model代表應用程式管理的一些物件。例如,我們可能會為 我們想在系統中建模的現實世界中的一些物體像使用者、產品和汽車等定義一個Model。這些Model在 模型管理器中註冊,被Store使用, 而這些Store又被許多 E

    玩轉extjs5之Ext.data.ModelExt.data.Store(四)

    一、Ext.data.Model        (1)Model代表應用程式管理的一些物件。例如,我們可能會為 我們想在系統中建模的現實世界中的一些物體像使用者、產品和汽車等定義一個Model。這些Model在 模型管理器中註冊,被Store使用, 而這些Store又被許多

    呼叫介面的2方法(connhttpclient)

    import com.ursa.acf.util.StringUtils; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import org.apache.http.client.methods.*; import org

    在Rxjava+Retrofit 2檢查網路連線顯示載入框

    上篇講到顯示隱藏載入框我們用的RxJava的doOnSubscribe()和doOnTerminate()。這裡我們檢查網路連線同樣是要在傳送網路請求前檢查,能不能也在doOnSubscribe()裡檢查呢,答案是:不能! 為什麼呢?因為doOnS

    v-modelv-bind的區別

    som 實現 表單 some rdquo 雙向 情況 blank 如果 VUE學習篇1 Mustache (雙大括號寫法)不能在 HTML 屬性中使用,應使用 v-bind 指令: <div v-bind:id="dynamicId"></div&

    17-7-20-electron主進程渲染進程區別與通信

    pcr 識別 pac 多個 coo main 完成 不同的 global 老規矩,先吐槽,再記錄。 今天被上司教育了將近一個小時。因為之前自動更新的模塊,我認為已經完成了,但是還有一些細節沒有完善好,就一直一直的被教育~ 事情全部做完,提交以後關閉issue! elec

    轉!!SQL左右連接的on andon where的區別

    生成 where條件 data- 一個 highlight article 根據 返回 地址 原博文地址:http://blog.csdn.net/xingzhemoluo/article/details/39677891 原先一直對SQL左右連接中的on and和on

    Java Thread,run方法start方法的區別

    bsp 區別 繼續 時間片 ron thread類 等待 nbsp art 兩種方法的區別: 1.start方法 用 start方法來啟動線程,是真正實現了多線程, 通過調用Thread類的start()方法來啟動一個線程,這時此線程處於就緒

    GCC -L、-rpath-rpath-link的區別

    目錄 恢復 固定 成功 ref exist fyi man手冊 錯誤 GCC 中 -L、-rpath和-rpath-link的區別 來源 http://blog.csdn.net/q1302182594/article/details/42102961 關於這3個參數的說明

    JavaScriptMath.max.apply()Math.max()的區別

    作用 div 調用 class color his arr array this JavaScript中Math.max()方法可以求出給定參數中的最大值,給定參數≥2個,可以使多個,但是必須是數字。 > Math.max(1,2,3,5,9,4); < 9

    2.14.1.內核發行版的區別.zhu

    註冊 設備 計算 14. 本質 OS 進程調度 不能 部分 2.14.1.1、到底什麽是操作系統 (1)linux、windows、android、ucos就是操作系統 (2)操作系統本質上是一個程序,由很多個源文件構成,需要編譯連接成操作系統程序(vmlinz、zImag

    HTTP的重定向請求轉發的區別

    response 傳輸 觀察 web應用 ali jpg 處理 size 什麽 一、調用方式 我們知道,在servlet中調用轉發、重定向的語句如下:request.getRequestDispatcher("new.jsp").forward(request, resp

    原 jQuerydocument的readyload事件的區別

    一個 log lai space fff num bsp add important 概述: 大家在工作中用jQuery的時候一定會在使用之前這樣: 1 2 3 4 5 6 7 8 //docu

    CentOS的 yum upgrade yum update 的區別

      通過 man yum 的幫助資訊瞭解 yum update 和 yum upgrade: update If run without any packages, update will update every currently installed package. If on

    js的作用域執行上下文的區別

    光是從字面上的概念上來理解的話有點繞,其實很好區分。 var a=1; //全域性作用域 function fn1(){ var a=2; //fn1作用域 } 如上程式碼,作用域代表著已宣告變數或者函式的訪問範圍,在fn1作用域內使用變數a會先從當前作用域

    【轉載】字元編碼ASCII、UnicodeUTF-8的區別

    1. ASCII碼 我們知道,在計算機內部,所有的資訊最終都表示為一個二進位制的字串。每一個二進位制位(bit)有0和1兩種狀態,因此八個二進位制位就可以組合出256種狀態,這被稱為一個位元組(byte)。也就是說,一個位元組一共可以用來表示256種不同的狀態,每一個狀態對應一個符

    Tensorflow tf.shape(a)a.get_shape()的區別

    一、tf.shape(a) 和 a.get_shape()比較 相同點:都可以得到tensor a 的尺寸 不同點:tf.shape(a)中a資料的型別可以是tensor,list,array,而a.get_shape()中的a的資料型別必須是tensor,且返回的是一個t

    webpackhash、chunkhashcontenthash三者的區別

    在webpack中有時需要使用hash來做靜態資源實現增量更新方案之一,檔名的hash值可以有三種hash生成方式,每一種都有不同應用場景,那麼三者有何區別呢? hash、chunkhash、contenthash hash一般是結合CDN快取來使用,通過webpack構建之後,生成對應檔名

    Servlet關於get提交post提交的區別

    1,生成方式 get的生成方式有4種。1)直接在URL位址列中輸入URL,2)網頁中的超連結,3)form表單中的 method為get,3)form中的method為空的時候,預設為get提交。 post生成方式:form表單中form=post和ajax提交。 2,資

    在遊戲何為音效混音的區別

    記得看過一本書,書上說聲音是電影的50%.電影的視覺效果搭配上恰當的聲音就能夠營造出一部精彩的電影,醞釀最純的情緒,使故事飽滿而又深刻,那更何況如今火熱的遊戲。自然也少不了音效的功勞,可以說其發展前景不容小噓。         據統計資料