精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Sencha Touch 2.0官方指南:使用data包

移動開發
本文叫講述《Sencha Touch 2.0官方指南:使用data包》。data包負責加載和保存Sencha Touch應用程序中的所有數據。

大多數情況下,data包中的model,store和proxy的用法如下: 

  • Model: model代表你應用關心的一個實體。用戶,聯系人,地址,和產品都可以是model。簡單地說,model只是字段(field)和相應數據的集合,當然,它可以做得更多。
  • Store: store只是一個model的實例集合。大多數情況下,它只是一個高級的數組,當然它也提供如排序,篩選和分組,以及引發事件等功能。
  • Proxy: proxy負責實現所有加載和保存數據的工作。通常你會創建一個AJAX proxy從你的服務器獲取數據并加載到store。

model 和 store 

最簡單的Model僅僅是一些字段(field)和相應數據的集合。我們來看看Ext.data.Model的四個主要部分 —  Fields,ProxiesAssociations 和 Validations.  

  

現在讓我們來看看怎樣創建一個model:

  1. Ext.define('User', { 
  2.     extend: 'Ext.data.Model'
  3.     fields: [ 
  4.         { name: 'id', type: 'int' }, 
  5.         { name: 'name', type: 'string' } 
  6.     ] 
  7. }); 

model通常和一個store一起使用,store基本上是一個model實例集合。創建一個store并加載數據很簡單:

  1. Ext.create('Ext.data.Store', { 
  2.     model: 'User'
  3.     proxy: { 
  4.         type: 'ajax'
  5.         url : 'users.json'
  6.         reader: 'json' 
  7.     }, 
  8.     autoLoad: true 
  9. }); 

我們在store里配置了Ajax Proxy,提供URL名稱,要求返回的數據編碼格式能夠被Reader正常使用。在本例中我們的服務器返回JSON格式的數據,所以我們已經建立了一個JSON Reader來讀取返回數據。store從URL users.json自動加載了model User的實例集合。users.json的URL應該返回一個JSON字符串,像這樣:

  1.     success: true
  2.     users: [ 
  3.         { id: 1, name: 'Ed' }, 
  4.         { id: 2, name: 'Tommy' } 
  5.     ] 

實時效果,請見Simple Store示例。 

內部數據 

Store也可以加載內部數據。在內部,Store會把我們傳遞的所有數據對象轉為Model實例:

  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. }); 

Inline Data 示例 

排序和分組 

Store既能夠進行本地排序,篩選和分組,也支持遠程排序,篩選,和分組:

  1. Ext.create('Ext.data.Store', { 
  2.     model: 'User'
  3.   
  4.     sorters: ['name''id'], 
  5.     filters: { 
  6.         property: 'name'
  7.         value   : 'Ed' 
  8.     }, 
  9.     groupField: 'age'
  10.     groupDir: 'DESC' 
  11. }); 

在我們剛剛創建的Store中,數據將首先由name排序,然后由id排序;數據只包含過濾條件name等于Ed的用戶,按age降序分組。隨時都可以簡單地通過Store API改變排序,篩選和分組。實時效果,請見Sorting Grouping Filtering Store 示例。 

Proxy 

proxy被store用于處理model數據加載和保存。proxy有兩種類型:客戶端和服務器端。在客戶端Proxy例子里,如果HTML5的本地存儲特性可用,則可以使用瀏覽器內存和本地存儲來存儲數據。服務器端proxy處理遠程服務器的封裝數據,例如AJAX,JSONP和Rest。 

proxy可以直接在model里定義,像這樣:

  1. Ext.define('User', { 
  2.     extend: 'Ext.data.Model'
  3.     fields: ['id''name''age''gender'], 
  4.     proxy: { 
  5.         type: 'rest'
  6.         url : 'data/users'
  7.         reader: { 
  8.             type: 'json'
  9.             root: 'users' 
  10.         } 
  11.     } 
  12. }); 
  13.   
  14. // Uses the User Model's Proxy 
  15. Ext.create('Ext.data.Store', { 
  16.     model: 'User' 
  17. }); 

這有助于兩個方面。首先,可能使用User model的每個store都需要以同樣的方法加載數據,因此我們需要避免重復為每個store定義proxy。其次,我們可以不使用store直接加載和保存model數據:

  1. // Gives us a reference to the User class 
  2. var User = Ext.ModelMgr.getModel('User'); 
  3.   
  4. var ed = Ext.create('User', { 
  5.     name: 'Ed Spencer'
  6.     age : 25 
  7. }); 
  8.   
  9. // We can save Ed directly without having to add him to a Store first because we 
  10. // configured a RestProxy this will automatically send a POST request to the url /users 
  11. ed.save({ 
  12.     success: function(ed) { 
  13.         console.log("Saved Ed! His ID is "+ ed.getId()); 
  14.     } 
  15. }); 
  16.   
  17. // Load User 1 and do something with it (performs a GET request to /users/1) 
  18. User.load(1, { 
  19.     success: function(user) { 
  20.         console.log("Loaded user 1: " + user.get('name')); 
  21.     } 
  22. }); 

porxy也可以利用HTML5新功能的優勢 - LocalStorageSessionStorage。雖然老的瀏覽器不支持HTML5的這些新API,但是對很多應用程序來說,使用它們的將可以使你受益匪淺。Model直接使用Proxy的示例。

關聯關系 

Model之間可以通過Associations API建立關聯關系。大多數應用程序需要處理許多不同的Model,Model之間總是有各種關聯。一個博客應用程序可能有User,Post和Comment這些model。每個用戶會創建許多帖子,每篇帖子又會收到許多評論。我們可以像這樣表達這些關系:

  1. Ext.define('User', { 
  2.     extend: 'Ext.data.Model'
  3.     fields: ['id''name'], 
  4.     proxy: { 
  5.         type: 'rest'
  6.         url : 'data/users'
  7.         reader: { 
  8.             type: 'json'
  9.             root: 'users' 
  10.         } 
  11.     }, 
  12.   
  13.     hasMany: 'Post' // shorthand for { model: 'Post', name: 'posts' } 
  14. }); 
  15.   
  16. Ext.define('Post', { 
  17.     extend: 'Ext.data.Model'
  18.     fields: ['id''user_id''title''body'], 
  19.   
  20.     proxy: { 
  21.         type: 'rest'
  22.         url : 'data/posts'
  23.         reader: { 
  24.             type: 'json'
  25.             root: 'posts' 
  26.         } 
  27.     }, 
  28.     belongsTo: 'User'
  29.     hasMany: { model: 'Comment', name: 'comments' } 
  30. }); 
  31.   
  32. Ext.define('Comment', { 
  33.     extend: 'Ext.data.Model'
  34.     fields: ['id''post_id''name''message'], 
  35.   
  36.     belongsTo: 'Post' 
  37. }); 

很容易就可以把你應用程序中不同model之間豐富關系表示出來。每個model可以與多個其他model建立關聯,你的model也可以在任意命令中定義。一旦我們有一個model的實例,我們可以很容易地遍歷相關的數據。例如,記錄一個選定用戶在所有博文上的留言,可以這樣做:

  1. // Loads User with ID 1 and related posts and comments using User's Proxy 
  2. User.load(1, { 
  3.     success: function(user) { 
  4.         console.log("User: " + user.get('name')); 
  5.   
  6.         user.posts().each(function(post) { 
  7.             console.log("Comments for post: " + post.get('title')); 
  8.   
  9.             post.comments().each(function(comment) { 
  10.                 console.log(comment.get('message')); 
  11.             }); 
  12.         }); 
  13.     } 
  14. }); 

我們上面創建的model都添加了一個新的方法hasMany。這是聲明每個User model有多個Post。在上面的代碼片段中,我們用到了user.posts()方法。調用user.posts()方法返回一個Post model配置的store。同樣,因為在Post model也聲明了與Comment的hasMany關系,我們可以調用comments()方法。 

關聯關系不僅在加載數據時有用,在添加新記錄時也有用:

  1. user.posts().add({ 
  2.     title: 'Ext JS 4.0 MVC Architecture'
  3.     body: 'It\'s a great Idea to structure your Ext JS Applications using the built in MVC Architecture...' 
  4. }); 
  5.   
  6. user.posts().sync(); 

在這里,我們實例化了一個新的Post,它會自動在user_id字段添加這個用戶的id。調用sync()方法可以通過配置的proxy保存這個新Post對象。你別看這個方法名稱叫sync(),這是一個異步操作,如果你想在操作完成時得到通知,你要傳遞一個回調方法。 

在model中,也有新的方法生成belongsTo關系。像下面的代碼這樣使用:

  1. // get the user reference from the post's belongsTo association 
  2. post.getUser(function(user) { 
  3.     console.log('Just got the user reference from the post: ' + user.get('name')) 
  4. }); 
  5.   
  6. // try to change the post's user 
  7. post.setUser(100, { 
  8.     callback: function(product, operation) { 
  9.         if (operation.wasSuccessful()) { 
  10.             console.log('Post\'s user was updated'); 
  11.         } else { 
  12.             console.log('Post\'s user could not be updated'); 
  13.         } 
  14.     } 
  15. }); 

再次強調,getUser這種讀取數據的方法是異步的,必須有一個回調方法來獲取用戶實例。setUser方法只需要更新外鍵(在這個例子里面是user_id)為100,再保存Post model。同樣的,只要保存操作結束,不管是否保存成功,回調方法都會被執行。 

加載嵌套數據 

你也許會奇怪,為什么我們在調用User.load時會傳遞一個success方法,但是在存取用戶的帖子和評論時又沒有這樣做。這是因為上面的例子中我們假定當我請求獲取一個用戶時,服務器返回的用戶數據已經嵌套了該用戶的所有帖子和評論。通過建立前面例子中那樣的關聯關系,只需要一次請求框架可以自動解析出嵌套的數據。服務器一次返回所有數據,不僅是用戶數據,還包括帖子數據和評論數據,數據格式如下:

  1.     success: true
  2.     users: [ 
  3.         { 
  4.             id: 1, 
  5.             name: 'Ed'
  6.             age: 25, 
  7.             gender: 'male'
  8.             posts: [ 
  9.                 { 
  10.                     id   : 12, 
  11.                     title: 'All about data in Sencha Touch 2'
  12.                     body : 'One areas that has seen the most improvement...'
  13.                     comments: [ 
  14.                         { 
  15.                             id: 123, 
  16.                             name: 'S Jobs'
  17.                             message: 'One more thing' 
  18.                         } 
  19.                     ] 
  20.                 } 
  21.             ] 
  22.         } 
  23.     ] 

這些數據全部被框架自動解析。你可以很容易從幾乎所有地方通過配置model的proxy加載數據,然后通過它們的reader處理返回格式。像Sencha Touch1一樣,model和store在整個框架中被很多個組件用到,如Grid,Tree,Form等等。 

在model中怎么樣使用這些關聯關系,請看 Associations and Validations 示例。 

當然,我們很可能使用非嵌套的方式加載數據。如果你需要“懶加載”(lazy load)相關數據,這可能對你有用。假定返回的數據只有用戶數據而不包含任務關聯的帖子,像我們以前做的,我們只需要加載用戶數據。然后,我們要在回調方法里面調用user.posts().load()方法以獲取相關的帖子數據:

  1. // Loads User with ID 1 User's Proxy 
  2. User.load(1, { 
  3.     success: function(user) { 
  4.         console.log("User: " + user.get('name')); 
  5.   
  6.         // Loads posts for user 1 using Post's Proxy 
  7.         user.posts().load({ 
  8.             callback: function(posts, operation) { 
  9.                 Ext.each(posts, function(post) { 
  10.                     console.log("Comments for post: " + post.get('title')); 
  11.   
  12.                     post.comments().each(function(comment) { 
  13.                         console.log(comment.get('message')); 
  14.                     }); 
  15.                 }); 
  16.             } 
  17.         }); 
  18.     } 
  19. }); 

完整例子請見 Lazy Associations 

驗證 

Sencha Touch2的Model對數據驗證有豐富的支持。為了證明這一點,我們將創建一些例子來說明。首先,讓我們在User model里添加一些驗證:

  1. Ext.define('User', { 
  2.     extend: 'Ext.data.Model'
  3.     fields: ..., 
  4.   
  5.     validations: [ 
  6.         {type: 'presence', name: 'name'}, 
  7.         {type: 'length',   name: 'name', min: 5}, 
  8.         {type: 'format',   name: 'age', matcher: /\d+/}, 
  9.         {type: 'inclusion', name: 'gender', list: ['male''female']}, 
  10.         {type: 'exclusion', name: 'name', list: ['admin']} 
  11.     ], 
  12.   
  13.     proxy: ... 
  14. }); 

驗證字段定義遵循相同的格式。在每一種情況下,我們指定一個字段和一個類型的驗證。在上面的例子中,我們要求name字段的值不能為空并且字符長度最少為5,age字段必須為數字,gender字段的值必須是“male”或者“female”,username可以是admin之外的任意值。有些驗證采取額外的可選配置 - 例如長度驗證可以使用Min和Max屬性,格式可以使用匹配正則表達式等等。Sencha Touch 2內置了5種驗證,添加自定義規則也很容易。首先,讓我們看看內置的: 

  • presence 確保該字段有一個值。0是一個有效的值,但空字符串不是的。
  • length 確保一個字符串的長度在最小和最大長度之間。這兩個約束是可選的。
  • format 確保一個字符串匹配一個正則表達式格式。在上面的例子中,我們必須確保年齡字段是由至少一個以上的數字。
  • inclusion 確保一個值是在一個特定值的集合內(例如,確保性別是男或女)。
  • exclusion 確保一個值不在一個特定值的集合內(例如,列入黑名單的用戶名,如“管理員”)。

現在,我們已經掌握了不同的驗證,讓我們嘗試對用戶實例中使用它們。我們將創建一個用戶,針對它運行驗證,并提示失敗信息:

  1. // now lets try to create a new user with as many validation errors as we can 
  2. var newUser = Ext.create('User', { 
  3.     name: 'admin'
  4.     age: 'twenty-nine'
  5.     gender: 'not a valid gender' 
  6. }); 
  7.   
  8. // run some validation on the new user we just created 
  9. var errors = newUser.validate(); 
  10.   
  11. console.log('Is User valid?', errors.isValid()); //returns 'false' as there were validation errors 
  12. console.log('All Errors:', errors.items); //returns the array of all errors found on this model instance 
  13.   
  14. console.log('Age Errors:', errors.getByField('age')); //returns the errors for the age field 

這里關鍵的方法是validate(),它運行所有配置的驗證,并返回一個錯誤對象。這個簡單的對象僅僅是一個已找到的所有錯誤集合,加上一些方便的方法如isValid(),如果所有字段都沒有錯誤則返回true,getByField()方法返回一個給定字段中的所有錯誤。 

使用驗證的完整示例請見 Associations and Validations 

延伸閱讀 

數據只是整個Sencha Touch 2 生態系統的一部分。要了解更多框架內容以及它是怎樣工作的,我們建議繼續閱讀如下文章: 

原文地址:http://html5mobi.gotoip1.com/discussion/222/sencha-touch-2-sencha-touch2-data-the-data-package

【編輯推薦】

  1. Sencha Touch 2.0官方指南:What's new feature?
  2. Sencha Touch 2.0官方指南:如何使用組件
  3. Sencha Touch 2.0官方指南:如何使用數據視圖
  4. Sencha Touch 2.0官方指南:如何使用"類"
責任編輯:佚名 來源: 移動Web開發社區
相關推薦

2011-10-26 10:21:40

Sencha Touc組件

2011-10-26 10:43:19

Sencha Touc

2011-10-26 10:32:05

Sencha Touc數據視圖

2011-10-18 09:49:40

新特征Sencha Touc

2011-09-02 15:18:49

Sencha Touc

2011-07-25 16:21:22

Sencha touc

2011-10-26 10:12:53

Sencha Touc布局

2011-09-02 15:42:55

Sencha Touc布局

2011-09-02 15:58:38

Sencha Touc布局

2011-09-30 14:15:10

Sencha ToucSencha Touc

2011-10-18 08:59:46

Sencha ToucHTML5

2011-09-02 16:08:09

Sencha ToucAPI文檔

2010-11-22 10:31:17

Sencha touc

2011-07-26 09:41:50

Sencha Touc特性HTML 5

2011-07-25 15:55:21

Sencha ToucHtml 5

2011-09-05 11:23:26

EclipseSencha Touc框架

2011-11-16 13:14:02

Sencha TouciOS本地應用

2011-09-02 16:42:51

Sencha ToucWeb應用

2012-05-01 20:57:26

Sencha Touc

2011-09-05 10:20:21

Sencha ToucAPP
點贊
收藏

51CTO技術棧公眾號

国产在线观看免费av| 青青草精品视频在线观看| 日韩中文字幕影院| 黄色aa久久| 蜜桃一区二区三区四区| 久久久97精品| 久久精品综合视频| 日韩一区二区三区四区五区| 亚洲一区二区三区国产| 欧美男人的天堂| 国产精品色综合| 国产精品入口66mio| 日韩中文字幕视频在线观看| 你懂的在线观看网站| 粉嫩av一区二区三区四区五区| 亚洲激情中文1区| 日本在线一区| 日韩在线视频免费| 国产一区二区h| 国产成人亚洲综合91| 国产成人无码aa精品一区| 免费欧美一区| 日韩欧美成人午夜| 天天干天天草天天| 日本不卡网站| 亚洲一区二区三区不卡国产欧美 | aiai久久| 欧美日韩成人在线| 欧美成人免费高清视频| 俄罗斯一级**毛片在线播放 | 亚洲欧洲一区二区福利| 亚洲日本香蕉视频| 国产成人在线影院| 成人黄色免费网站在线观看| 日本精品入口免费视频| 亚州精品视频| 日韩精品资源二区在线| 污污网站免费看| 欧美日韩精品免费观看视完整| 久久精品亚洲麻豆av一区二区| 99久久久久国产精品免费| 97成人在线观看| 日韩高清不卡一区二区三区| 丝袜亚洲另类欧美重口| a毛片毛片av永久免费| 国产福利一区二区精品秒拍| 日韩免费一区二区| 一级黄色免费毛片| 国产精品亚洲四区在线观看| 亚洲影院久久精品| 天天成人综合网| а√中文在线资源库| 精品一二三四区| 久久久久久久成人| 波多野结衣亚洲色图| 欧美激情性爽国产精品17p| 久久在线免费观看视频| av成人免费网站| 欧美在线亚洲| 色综合久久88| 五月天综合视频| 亚洲免费福利一区| 亚洲色图国产精品| 一级片久久久久| 小小影院久久| 欧美国产高跟鞋裸体秀xxxhd| 久久亚洲成人av| 亚洲欧洲午夜| 日韩av电影手机在线| 国产无遮挡又黄又爽又色视频| 日韩电影在线一区二区三区| 国产精品网址在线| 99热这里只有精品在线| 成人午夜视频在线观看| 国内一区二区在线视频观看| 一级黄色片在线观看| 久久爱www久久做| 91精品国产综合久久香蕉| 奇米影视第四色777| 亚洲专区免费| 国产精品视频一区二区三区四| 国产精品视频a| 成人国产电影网| 日韩欧美精品在线不卡 | 欧美丰满片xxx777| 久久国产视频播放| 美日韩一区二区三区| 91影视免费在线观看| 蜜桃91麻豆精品一二三区| 99精品久久免费看蜜臀剧情介绍| 神马影院一区二区| 日本乱理伦在线| 在线影院国内精品| 久久无码人妻一区二区三区| 亚洲8888| 久久91精品国产| 成年人视频在线免费看| 韩国欧美国产1区| 蜜桃传媒视频第一区入口在线看| 日本在线观看www| 午夜国产精品一区| 久久久精品高清| 牛牛影视久久网| 精品国产网站地址| 中文字幕黄色片| 国产精品一二三四五| 秋霞久久久久久一区二区| 后进极品白嫩翘臀在线视频| 久久久国产精华| 成人国产在线看| 黄色成人小视频| 亚洲国产精品久久精品怡红院| 特黄一区二区三区| 免费中文字幕日韩欧美| 欧美一性一乱一交一视频| 在线播放成人av| 奇米色777欧美一区二区| 成人情视频高清免费观看电影| 黄色大片在线看| 国产亚洲欧美激情| 国产妇女馒头高清泬20p多| 日日夜夜亚洲精品| 国产香蕉精品视频一区二区三区| 久久久精品视频免费| 精品亚洲aⅴ乱码一区二区三区| 欧美精品欧美精品系列c| 爱情岛亚洲播放路线| 91精品国产综合久久久久久久 | 国产精品免费久久久久| 欧美牲交a欧美牲交aⅴ免费真| а√天堂8资源在线| 538在线一区二区精品国产| 欧美黄色一级生活片| 一本色道88久久加勒比精品| 国产精品日韩高清| 深夜国产在线播放| 欧美二区乱c少妇| 综合 欧美 亚洲日本| 三级精品在线观看| 欧洲av一区| 香蕉视频亚洲一级| 亚洲人成77777在线观看网| 免费在线不卡视频| 2024国产精品视频| 欧美视频在线观看网站| 林ゆな中文字幕一区二区| 欧美精品videosex性欧美| 国产黄色高清视频| 一区二区三区精品视频| 老司机av网站| 黄色免费成人| 国产丝袜不卡| 涩涩网在线视频| 日韩高清中文字幕| www.欧美色| 国产精品免费免费| 中文字幕一区二区在线观看视频| 欧美一区高清| 国产精品久久久久久久小唯西川| 国产偷倩在线播放| 亚洲精品xxxx| 影音先锋在线国产| 国产欧美一区二区精品婷婷| 伊人影院综合在线| 一区二区三区在线观看免费| 91视频免费在线观看| 绿色成人影院| 国产午夜精品免费一区二区三区 | 欧美国产日韩在线观看成人| 国产91对白在线观看九色| 男女啪啪免费视频网站| 国产成人精品999在线观看| 国产女人18毛片水18精品| 国产激情小视频在线| 亚洲黄色在线看| 毛片在线免费播放| 亚洲欧美日韩在线播放| 色哟哟视频在线| 日韩中文字幕亚洲一区二区va在线| 亚洲美女搞黄| 国产区精品视频在线观看豆花| 日本成熟性欧美| 国产婷婷在线视频| 亚洲国产精品尤物yw在线观看| 国产激情视频网站| 免费xxxx性欧美18vr| 日本大胆人体视频| 蜜臀av免费一区二区三区| 成人免费自拍视频| 岛国av在线网站| 日韩在线免费视频| 无码精品人妻一区二区三区影院| 欧美日韩在线三级| 国产香蕉在线视频| 国产精品剧情在线亚洲| 国产一级伦理片| 精品一区二区成人精品| 六月丁香婷婷在线| 欧美在线亚洲综合一区| 日韩免费一区二区三区| 久本草在线中文字幕亚洲| 国产噜噜噜噜噜久久久久久久久 | 国产天堂在线| 日韩欧美高清在线| 亚洲视频一区在线播放| 午夜精品久久久久久久蜜桃app | 色呦哟—国产精品| 激情视频在线观看一区二区三区| 色8久久久久| 国产高清在线不卡| freexxx性亚洲精品| 久久影视电视剧免费网站| 久色视频在线| 日韩精品中文字幕有码专区| 性猛交xxxx乱大交孕妇印度| 精品视频在线免费| 四虎成人在线观看| 香蕉av福利精品导航| 麻豆成人在线视频| 日韩理论片在线| 久久日免费视频| 久久日一线二线三线suv| 一二三区视频在线观看| 国产精品影音先锋| 网站在线你懂的| 7777久久香蕉成人影院| 视频在线99re| 国产在线日韩精品| 欧美大陆一区二区| 欧美大胆视频| 国产一级精品aaaaa看| 综合伊人久久| 91视频99| 风间由美一区二区av101| 99久久精品免费看国产四区 | 欧美日韩大片| 欧美亚洲在线播放| 一二三四视频在线中文| 久久久久久有精品国产| 九色91在线| 久久久爽爽爽美女图片| 国精一区二区三区| 97久久精品人人澡人人爽缅北| 波多野结依一区| 97视频在线播放| 中文字幕在线免费观看视频| 国语对白做受69| 九色porny丨首页入口在线| 97在线观看视频国产| 天堂√8在线中文| 日韩av电影中文字幕| 偷拍自拍在线看| 国产精品99久久久久久久久| 99久久精品一区二区成人| 国产欧美一区二区三区久久人妖| 国产精品亲子伦av一区二区三区| 91精品国产综合久久香蕉922| 精品午夜视频| 国产伦精品一区二区三区免 | 国产a级黄色大片| 国产一区亚洲| 日本www在线播放| 天堂在线一区二区| 加勒比av中文字幕| 国产精品一二一区| 少妇户外露出[11p]| 日本一区二区成人| 男人的天堂久久久| 五月婷婷久久综合| 亚洲天堂视频在线播放| 欧美精品丝袜中出| 国模私拍视频在线| 亚洲欧洲激情在线| 免费观看久久久久| 欧美精品xxx| 自拍一区在线观看| 国产主播欧美精品| 国产成人一二片| 色一情一乱一伦一区二区三欧美| 亚洲激情久久| 一区二区传媒有限公司| 久久99精品久久久| 50一60岁老妇女毛片| 中文字幕乱码一区二区免费| 欧美爱爱小视频| 91福利在线看| 亚洲精品无遮挡| 这里只有视频精品| av丝袜在线| 国产一区二区在线免费| 欧美xxxx在线| 综合操久久久| 在线一区视频| 黄色a级三级三级三级| 91日韩一区二区三区| 久久中文免费视频| 色一区在线观看| 亚洲国产精彩视频| 国产一区二区三区直播精品电影| 国产美女一区视频| 国产精品劲爆视频| 久久影视三级福利片| 看一级黄色录像| 视频在线观看国产精品| 日韩成人av影院| 国产精品色呦呦| 国产成人在线视频观看| 日韩西西人体444www| 91精品专区| 欧美在线视频一区二区| 91九色鹿精品国产综合久久香蕉| 亚洲欧美久久234| 亚洲女同同性videoxma| 中文字幕永久免费| 亚洲色图制服丝袜| 中文字幕人妻互换av久久| 亚洲国产成人久久综合| 在线电影福利片| 成人欧美一区二区三区黑人| 欧美精品尤物在线观看 | xxxx 国产| 欧美一区二区久久久| 日本视频在线观看| 国产成人+综合亚洲+天堂| 欧美成人专区| heyzo亚洲| 99在线精品观看| 日本三级理论片| 亚洲电影在线看| av资源中文在线| 精品国产乱码久久久久久丨区2区 精品国产乱码久久久久久蜜柚 | 7777精品伊人久久久大香线蕉最新版| 国产小视频免费在线观看| 91高清免费视频| 欧美激情久久久久久久久久久| 欧美中文字幕在线观看视频| 国产高清在线精品| 欧美日韩精品亚洲精品| 日韩一区二区中文字幕| 在线视频观看国产| 91理论片午午论夜理片久久| 精品人妻伦一二三区久久| x99av成人免费| 成人在线高清| 亚洲欧美日本国产有色| 麻豆精品一区二区三区| 青青青视频在线免费观看| 欧美三级韩国三级日本一级| 中文日本在线观看| 成人黄色片网站| 欧美在线视屏| 欧洲熟妇的性久久久久久| 亚洲.国产.中文慕字在线| 老熟妇高潮一区二区高清视频| 97久久久久久| 免费一区二区| 极品粉嫩美女露脸啪啪| 一区二区三区视频在线观看| 丁香花免费高清完整在线播放| 国内外成人免费激情在线视频网站 | 亚洲欧洲一区二区三区| 91久久国语露脸精品国产高跟| 欧美成人黑人xx视频免费观看| 中文字幕一区二区三区日韩精品| 黄色成人在线免费观看| 99精品一区二区| 337p粉嫩色噜噜噜大肥臀| 久久精品国产99国产精品澳门| 亚洲网址在线观看| 人妻精品无码一区二区三区| 日本一区二区三区四区| 国产三级在线观看视频| 国内成人精品一区| av一区二区高清| 久久aaaa片一区二区| 欧美日韩亚洲视频一区| 天堂网一区二区三区| 亚洲欧美综合区自拍另类| 色狠狠一区二区三区| 97超碰人人澡| 欧美国产成人精品| 欧美 日韩 国产 精品| 国产第一区电影| 欧美视频福利| 黄色av免费播放| 亚洲成人黄色网址| 国产精品麻豆成人av电影艾秋| 欧美高清中文字幕| 欧美国产日本视频| 亚洲av综合色区无码一二三区| 国产成人午夜视频网址| 黑丝一区二区| 91制片厂在线| 亚洲区中文字幕| 综合视频一区| 日韩一区二区三区久久| 精品日本高清在线播放| 成年人网站在线| 日韩国产一区久久| av午夜精品一区二区三区|