日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Angular的学习

發布時間:2024/1/18 编程问答 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Angular的学习 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Angular的學習

  • Angular的特性.
  • MVC : 在前端引入了MVC的設計模式
  • 模塊化開發
  • 自動的雙向數據綁定
    *語義化標簽(自定義標簽)
  • 依賴注入
  • 其核心就是通過指令擴展了HTML,通過表達式綁定數據到HTML
  • Angular不推崇DOM操作
  • ng最主要是用來實現spa應用 - SPA (單頁面應用程序)

我們了解了Angular的特性,再來著手學習可能會對這些特性有更深刻的體會

MVC設計模式

1.現實生活中的MVC

  • 現實生活中的分工合作案例 – 大飯店

    • 采購:負責原材料采購.
    • 小工: 打雜,洗菜,洗碗.
    • 廚師: 切菜 炒菜
    • 服務員:端菜 迎賓
    • 收銀員: 收錢.
    • 采購:指揮協調其它人員工作.
  • 在一些街邊小飯館其實這些事情完全是交給一個人去做 –> 老板

    • 所有的事情都是這1個人去做.
  • 對比一下這兩種經營方式的區別

    • 大飯店: 正規,分工合作,各司其職,效率高.
    • 小飯館: 不正規,慌亂.效率低下.
  • 同樣的事情兩種實現方式

    • 都是將客人點的菜展示到餐桌上.
    • 不同的單位使用了不同的流程.
    • 大飯店: 每個人負責1個流程.高效并且可維護程度極高. 掛了1個 人,不影響其它人.只換這1個人就可以.
    • 小飯館: 1個人負責整個流程,效率低下并且可維護程度極低,老板掛了,飯館就得關門.
      由此可見,分工是多么的重要
  • 代碼中的MVC

    • 實際上,我們寫網站的過程,和開飯店的原理和流程極其相似,我們寫網站是將數據展示到頁面上.

    • 目前,我們寫代碼都是一股腦的將所有的代碼寫在一起,這樣去寫固然沒有什么問題,因為你終究還是將效果實現了.

    • 但是這樣做的后果是可怕的,隨著項目越來越大,你的代碼將變得非常難以維護.

  • 為了讓我們的代碼更加容易的維護,也為了使得我們的代碼層次更加分明

  • 我們將我們的代碼分為三部分

    • M - Model 數據 數據實體,用來保存頁面要展示的數據.
    • V - View 視圖 負責顯示數據的,一般其實就是指的html頁面.
    • C - Controller 控制器 控制整個業務邏輯,負責處理數據,比如數據的獲取,以及數據的過濾,進而影響數據在視圖上的展示.
      這樣,這3部分各司其職,分工合作,我們的代碼就會變得更有層次并容易維護.
      這樣的程序設計模式,我們就叫做MVC設計模式.
  • MVC是由后端而來,由于受到前端技術的限制便有了一些細節的調整,

  • 進而出現了很多MVC的衍生版(子集)如MVVM、MVW、MVP、MV*等。

模塊化

  • 使用AngularJS構建應用(App)時是以模塊化(Module)的方式組織的,即將整個應用劃分成若干模塊,每個模塊都有各自的職責,最終組合成一個整體。

  • 采用模塊化的組織方式,可以最大程度的實現代碼的復用,可以像搭積木一樣進行開發。

  • 1. 定義應用

    通過為任一HTML標簽添加ng-app屬性,可以指定一個應用,表示此標簽所包裹的內容都屬于應用(App)的一部分。通俗的理解就是: ng-app屬性標簽被Angular管理,包括其中的子標簽.Angular會認為這是一個應用,將其作為一個應用來看待。

    2. 定義模塊

    AngularJS提供了一個全局對象angular,調用該全局對象的module()方法可以創建一個模塊.該方法返回一個模塊對象.這個模塊對象就是AngularJS用來管理應用的對象. <!DOCTYPE html><!--為html標簽定義ng-app屬性 代表整個文檔都被ng管理--><html lang="en" ng-app="myApp"><head><meta charset="UTF-8"><title>Title</title><script src="lib/angular.js"></script></head><body><script>//調用全局對象angular的module方法創建一個模塊.//第一個參數: 模塊要管理的標簽范圍,寫上ng-app屬性的值.//第二個參數: 模塊依賴,數組,如果不需要依賴,就直接寫一個空數組就可以.//返回值:返回的app對象,我們可以認為這個對象就是ng用來管理這個模塊的.var app = angular.module('myApp',[])</script></body></html> ### 3. 定義控制器 接下來我們可以通過app模塊對象來創建控制器. 調用app模塊對象的controller方法,就可以創建控制器. var app = angular.module('myApp',[])//調用app的controller方法創建控制器.//第一個參數: 要將創建的控制器關聯到指定的View上,字符串.//第二個參數: 這是一個數組,數組的其中一個元素是'$scope',// 數組的最后一個元素必須是1個function 參數是$scope// 先把$scope寫死,后面學了服務就知道$scopeapp.controller('demoCtrl',['$scope',function ($scope) {}]);
    • 但是這個時候,我們只是創建了控制器,并沒有將控制器和視圖關聯起來.
    • 視圖是用來負責顯示數據的,控制器是來處理數據模型,并將數據模型給視圖展示.
    • 視圖就是我們的html頁面. 所以我們可以指定1個html元素(視圖)與這個控制器相關聯.
      為這個html元素指定1個ng-controller屬性.值為創建controller的第1個參數的值.
    <div ng-controller="demoCtrl"> <!-- 這個時候,創建的控制器,就與這個視圖關聯起來了. --><dl><dt></dt><dd></dd></dl></div> * 這個時候,創建的控制器,就與這個視圖關聯起來了 * 在控制器中就可以處理制造數據.視圖中就可以顯示模型數據了.

    數據模型

    控制器負責處理制造模型數據.
    視圖負責顯示控制器制造的模型數據.
    那么控制器如何制造數據呢?

    app.controller('demoCtrl',['$scope',function ($scope) {//我們可以認為,$scope就是一個數據模型.//這是一個對象,//這個對象可以在控制器中訪問,也可以在與控制器關聯的視圖中直接訪問.//那么這個時候,控制器中可以將制造的數據放在這個$scope對象中.$scope.name = '小明';$scope.info = '我的名字叫小明,今年18歲';}]); 這個時候,控制器已經負責將數據模型構建完畢,那么視圖中如何展示這些數據呢? <!--這個視圖與我們創建的控制器相關聯,在這個視圖中,可以直接訪問與之相關聯的控制器構建的$scope對象,需要注意的是:在視圖中,如果要綁定顯示$scope對象中的數據的值a. 使用 {{}} 符號b. 在這其中直接寫上$scope對象中的數據的值{{name}} 不需要寫$scope.name而是直接寫namec. 這樣在ng渲染的時候,就會將{{name}}顯示成$scope.name的值<div ng-controller="demoCtrl"><dl><dt>{{name}}</dt><dd>{{info}}</dd></dl><div>--> 最后,視圖中就顯示出來數據了

    Angular的基本結構

    • Angular的基本結構和工作流程

    • 指定Angular管理的范圍 ng-app
    • 創建模塊 angular.module()
    • 創建角色

      • 3.1 創建控制器 app.controller()
      • 3.2 指定與控制器關聯的視圖 ng-controller
    • 控制器制造數據模型并附到 scope scope.xx = yy;

    • 在視圖中顯示模型數據 {{}}

    下面舉個例子來對Angular的結構有更清晰的認知

    <!DOCTYPE html> <!-- 1.指定整個html文檔都被ng管理--> <html lang="en" ng-app="ngApp"> <head><meta charset="UTF-8"><title>Title</title><script src="lib/angular.js"></script></head> <body><!-- 將視圖與控制器相關聯 --><table ng-controller="stuList"><tr><td>編號</td><td>姓名</td><td>性別</td><td>年齡</td></tr><tr ng-repeat="stu in students"><!-- 遍歷數組,并循環生成html --><td>{{stu.id}}</td><td>{{stu.name}}</td><td>{{stu.gender}}</td><td>{{stu.age}}</td></tr></table> <script>//2.創建模塊var app = angular.module('ngApp',[]);//3.創建MVC角色. 控制器,視圖app.controller('stuList',['$scope',function ($scope) {//制造數據模型,并綁定到$scope中.$scope.students = [{id:1,name:'小明',gender:'男',age:18},{id:2,name:'小花',gender:'女',age:16},{id:3,name:'小強',gender:'男',age:14},{id:4,name:'小東',gender:'男',age:19},{id:5,name:'小常',gender:'女',age:20}];}]); </script> </body> </html>

    Angular指令

    • HTML在構建應用(App)時存在諸多不足之處
    • AngularJS通過擴展一系列的HTML屬性或標簽來彌補這些缺陷
    • 所謂指令就是AngularJS自定義的HTML屬性或標簽
    • 這些指令都是以ng-做為前綴的,例如ng-app、ng-controller、ng-repeat等

    1. 內置指令

    • ng-app 指定應用根元素 也就是ng管理的范圍.可以使用全局對象angular的module方法根據該屬性的值創建模塊對象.
    • ng-controller 指定與控制器關聯的視圖.
    • ng-show 控制元素及其子元素是否顯示 true->顯示 false->不顯示
    • ng-hide 控制元素及其子元素是否隱藏 true->隱藏 false->不隱藏
    • ng-if 控制元素及其子元素是否創建 true->創建 false->刪除.
    • ng-src 增強圖片路徑. src=”“雖然能顯示,但是會報錯.報錯的原因.
    • ng-href 增強href路徑
    • ng-class 值為對象 {red:true} 表示會添加1個red類名到元素身上. {red:false}不會將red類名添加到元素身上.
    • ng-include 將外部文件包含進來.一般用在頁面的公共部分.被請求的頁面是以ajax的方式請求的. ng-inlcude=“‘path’”需要注意的是,給該屬性賦值的時候,屬性本身的值應該使用雙引號引起來,但是其中的路徑還要使用單引號引起來.
    • ng-disable 是否禁用表單元素
    • ng-readonly 是否只讀
    • ng-checked 原生的checked屬性帶有歧義,ng補充1個新的指令ng-checked 其值bool類型 true選中 false不選中.
    • ng-selected 是否選中
      后續還會介紹其他內置指令

    2. 自定義指令

    • AngularJS不僅提供了功能強大的內置指令.還提供了一套允許我們自定義指令的機制.
    • 如果我們覺得ng提供的指令不夠強大和好用,我們完全可以定義我們自己的指令.
    • 模塊對象app,提供了一個directive方法,這個方法就可以讓我們自定義指令.

      • 該方法需要兩個參數

        第1個參數 指令的名稱 - 指令名稱不能包含符號,如果指令名稱是tag,那么直接使用tag就行. 如果指令是hmTag,那么要使用hm-tag

        第2個參數 回調函數

        在ng解析這個指令的時候,就會自動去執行這個回調函數. 這個回調函數必須要按照要求返回1個對象. restrict: ECMA E:Element C:Class M:Mark A:Attribute 自定義指令 replace: bool值,是否替換原有標簽. template: 模板,自定義指令將被替換成什么. templateUrl:加載外部文件 給一個需要加載的文件的路徑.
    <!DOCTYPE html> <html lang="en" ng-app="hmApp"> <head><meta charset="UTF-8"><title>Title</title><script src="lib/angular.js"></script> </head> <body> <div hm-tag></div> <!--加了這個自定義指令的標簽中,就會被自動渲染自定義指令對應的template --> <script>var app = angular.module('hmApp',[]);app.directive('hmTag',function () {return {restrict:'EA',replace:false,template:'<h1>我是中國人,我愛自己的祖國</h1>'};}); </script> </body> </html>

    數據單向綁定

    • 所謂的數據的單向綁定,
    • 指的就是在控制器中制造數據模型,
    • 并將數據模型顯示在視圖上的過程.
    • 數據單向綁定的步驟
    • 先在控制器中制造數據
    • 在視圖中使用綁定符號{{}}將控制器制造的數據模型顯示
    <!DOCTYPE html> <html lang="en" ng-app="hmApp"> <head><meta charset="UTF-8"><title>Title</title><script src="lib/angular.js"></script> </head> <body> <div ng-controller="demoCtrl"><h1>{{data.name}}</h1><ul><li ng-repeat="item in data.courses">{{item}}</li></ul> </div> <script>var app = angular.module('hmApp',[]);app.controller('demoCtrl',['$scope',function ($scope) {$scope.data = {name:"小明",courses:['html','css','js']};}]); </script> </body> </html>```需要特別說明的是ng-bind指令和{{}}符號的效果是一樣的. {{}}符號是ng-bind指令的簡寫形式.所以,上面的代碼也可以這樣寫.```js<div ng-controller="demoCtrl"><h1 ng-bind="data.name"></h1><!-- ng-bind指令與{{}}符號完全等價 --><ul><li ng-repeat="item in data.courses" ng-bind="item"></li></ul></div>

    雖然ng-bind與{{}}使用效果是一樣的,
    但是在更多的地方我們仍然使用{{}}的場景更多一些

    比如 : 這樣的情況使用{{}}就方便的很多了.

    “`js

    大家好,我叫{{name}},我今年歲{{age}}了

    “`

    ### 解決閃爍的問題

    • 雖然{{}}符號和ng-bind指令作用是一樣的.但是他們在效果上有一些些區別
    • 使用{{}}符號有可能會出現閃爍現行(當吧ng文件的引入放在頁面后面的時候)
    • 出現閃爍的原因
      • 瀏覽器先渲染html頁面.遇到ng指令不認識 原因輸出.
      • 而后,ng開始工作,渲染綁定數據.
      • 所以,中間有這么一個閃爍的過程.
        解決閃爍問題
      • 第一種方式: 將ng文件的引入放在head標簽中.
      • 第二種方式: 為標簽添加1個ng-cloak指令.就可以解決.
        ng-cloak的原理.
      • ng會自動的生成1段css代碼,將這個標簽隱藏.
      • 當數據綁定工作完成之后,再顯示這個標簽.

    數據雙向綁定

    • ng-model指令可以作用于表單元素.
      該指令的作用
      • 聲明1個變量.該屬性的值就是聲明的變量.
      • 這個變量的值和表單元素的值是相互影響的.
      • 表單元素的值發生變化,這個變量的值也會跟著發生變化.
      • 這個變量的值發生變化,表單元素的值也會跟著發生變化.
      • 這樣的數據綁定,就叫做雙向數據綁定.
    <body><div ng-controller="demoCtrl"><input type="text" ng-model="val"> <!-- 使用ng-model指令聲明的變量val,被文本框的值綁定 文本框的值改變會影響val的值,val的值得改變也會影響文本框的值, 這個時候,文本框的值和變量val是一個雙向綁定的關系.--><h1>{{val}}</h1><button ng-click="show()">按鈕</button> <!-- 按鈕點擊的時候,執行控制器綁定在$scope上的show方法,這個方法中直接修改了val變量的值, 你會發現文本框中的數據也會跟著一起改變.這就是雙向數據綁定--></div><script>var app = angular.module('hmApp',[]);app.controller('demoCtrl',['$scope',function ($scope) {$scope.show = function () {$scope.val = 199;}}]);</script></body>

    ng-init指令

    數據模型的初始化,我們一般是放在控制器中.
    scope..,Angular便.使ng?init.使ng?init scope仍然可以訪問

    “`js

    {{name}} {{age}}


    var app = angular.module('hmApp',[]);

    “`

    對于一些復雜的數據模型,比如數組、對象明顯在controller中初始化就方便的很多.

    Angular事件處理

    1 ng-click

    原生js中如果需要綁定點擊事件,在html元素中使用onclick屬性,
    指定該屬性的值為一個函數調用.
    那么這個函數就是全局的函數,會造成全局污染.

    “`js

    function login(){
    .......
    }

    登錄

    “`

    Angular為了解決這個問題,使用了1個ng指令ng-click
    這是Angular中的點擊指令,為其賦值一個函數,不同的是,這個函數需要在控制器中綁定到$scope對象中.
    那么這個函數就不再是一個全局的函數,就不存在全局污染的問題了.

    <div ng-controller="demoCtrl"><!-- 指定按鈕的ng-click為login--><button ng-click="login()">按鈕</button></div><script>var app = angular.module('hmApp',[]);app.controller('demoCtrl',['$scope',function ($scope) {//在控制器中為$scope綁定login函數.這樣在視圖中就可以調用$scope.login = function () { alert("正在登錄,請稍后.....");}}]);</script>

    2 ng-moueover

    其實原理是一樣的,這是ng的指令 用來綁定鼠標移入事件.

    <div ng-controller="demoCtrl"><button ng-click="login()">按鈕</button><input type="text" ng-mouseover="mover()"></div><script>var app = angular.module('hmApp',[]);app.controller('demoCtrl',['$scope',function ($scope) {$scope.login = function () {alert("正在登錄,請稍后.....");};$scope.mover = function () {console.log("鼠標移入了.....");}}]);</script>

    其他事件指令

    其實到這里我們可以總結出一些規律了
    Angular的事件指令是在原生指令屬性的基礎之上把on去掉替換為ng-
    onclick –> ng-click
    onmouseover –> ng-mouseover
    onkeyup –> ng-keyup
    ……

    數據處理

    1 ng-repeat

    用于循環生成標簽,并綁定數據.
    可以遍歷數組.

    <!DOCTYPE html><html lang="en" ng-app="hmApp"><head><meta charset="UTF-8"><title>Title</title><script src="lib/angular.min.js"></script></head><body><div ng-controller="processDataView"><ul><!-- ng-repeat指令代表重復生成這個標簽.值代表遍歷數組中的每一個元素 并綁定顯示 --><li ng-repeat="item in lessons">{{item}}</li></ul></div><script>var app = angular.module('hmApp',[]);app.controller('processDataView',['$scope',function ($scope) {$scope.lessons = ['html','css','js','jQuery'];}])</script></body></html>

    可以遍歷對象

    <!DOCTYPE html><html lang="en" ng-app="hmApp"><head><meta charset="UTF-8"><title>Title</title><script src="lib/angular.min.js"></script></head><body><div ng-controller="processDataView"><ul><li ng-repeat="item in lessons"></li></ul><table><tr><!--遍歷對象,item迭代變量直接就是每一個屬性的值--><td ng-repeat="item in student">{{item}}</td><!--如果希望得到屬性名稱和屬性值 可以像下面這樣如果是數組,key拿到的就是下標 --><td ng-repeat="(key,item) in student">{{key}}:{{item}}</td></tr></table></div><script>var app = angular.module('hmApp',[]);app.controller('processDataView',['$scope',function ($scope) {$scope.lessons = ['html','css','js','jQuery'];$scope.student = {name:"杰克",age:18,gender:"男"};}])</script></body></html>

    ng-switch

    該指令的作用與js的switch-case非常相像
    判斷變量的值,如果變量的之與列出的任意1個值相等,則執行其中的邏輯.
    語法規則

    <!-- 判斷變量item的值 可以直接簡寫為ng-switch --><li ng-repeat="item in list" ng-switch on="item"><span ng-switch-when="html">我喜歡html</span><p ng-switch-when="ccs">哈哈css</p><a ng-switch-when="js" href="#">哦js</a><span ng-switch-when="jQuery">like jQuery</span><span ng-switch-default>啦啦啦,沒有匹配到</span></li><!-- 在重復li標簽時 到底嵌套那1個 根據when的值匹配來決定 當沒有任何匹配的時候 就是default-->

    也可以下面這樣使用

    <!DOCTYPE html><html lang="en" ng-app="hmApp"><head><meta charset="UTF-8"><title>Title</title><script src="lib/angular.min.js"></script></head><body><div ng-controller="demoCtrl" ng-switch="name"><div ng-switch-when="rose">Rose</div><div ng-switch-when="jack">Jack</div><div ng-switch-when="lily">Lily</div><div ng-switch-when="poly">Poly</div><div ng-switch-default>默認選項</div></div><script>var app = angular.module('hmApp',[]);app.controller('demoCtrl',['$scope',function ($scope) {$scope.name = "jack";}]);</script></body></html>

    Angular作用域

    1.相互獨立的視圖/控制器,他們的作用域($scope)也是相互獨立,互不影響的.

    <!DOCTYPE html><html lang="en" ng-app="hmApp"><head><meta charset="UTF-8"><title>Title</title><script src="lib/angular.min.js"></script></head><body><div ng-controller="demoCtrl1"></div><!--在與第2個控制器關聯的視圖上,無法訪問與第1個視圖相關聯的控制器的數據--><div ng-controller="demoCtrl2"></div><div ng-controller="demoCtrl3"></div><script>var app = angular.module('hmApp',[]);app.controller('demoCtrl1',['$scope',function ($scope) {$scope.name = "杰克";//為第1個控制器/視圖的$scope綁定了一個數據.//這個數據只能在與當前控制器相互關聯的視圖上訪問.//不能在與別的控制器關聯的視圖上訪問.}]);app.controller('demoCtrl2',['$scope',function ($scope) {}]);app.controller('demoCtrl3',['$scope',function ($scope) {}]);</script></body></html>

    2.父子關系的視圖所對應的控制器,在子視圖/控制器中

    可以訪問父視圖/控制器中$scope的數據.
    * 子視圖中可以訪問父視圖中的數據.
    * 父視圖不能訪問子視圖中的數據.
    * 如果訪問的變量在視圖中有定義,那么優先訪問子視圖自己的,
    如果該變量子視圖自己沒有定義,
    這個時候再去嘗試查找父視圖中是否有定義這個數據.

    <!DOCTYPE html> <html lang="en" ng-app="hmApp"> <head><meta charset="UTF-8"><title>Title</title><script src="lib/angular.min.js"></script> </head> <body> <div ng-controller="fatherCtrl"><div ng-controller="sonCtrl"><span>在子視圖中訪問父視圖作用域中的數據: </span><!--當視圖存在父子關系的時候,子視圖可以訪問父視圖的數據--></div> </div> <script>var app = angular.module('hmApp',[]);app.controller('fatherCtrl',['$scope',function ($scope) {$scope.name = "杰克";}]);app.controller('sonCtrl',['$scope',function ($scope) {}]); </script> </body> </html>

    3.根作用域

    • 我們可以使用ng-init指令來初始化一個變量,在父級元素上.
    • 那么這個父級元素下所有的子視圖都可以訪問.
    <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Title</title><script src="lib/angular.min.js"></script> </head> <body><div ng-app="hmApp" ng-init="name='jack'"><div ng-controller="demoCtrl1"></div><div ng-controller="demoCtrl2"></div><div ng-controller="demoCtrl3"></div></div><script>var app = angular.module('hmApp',[]);app.controller('demoCtrl1',['$scope',function ($scope) {}]);app.controller('demoCtrl2',['$scope',function ($scope) {}]);app.controller('demoCtrl3',['$scope',function ($scope) {}]);</script> </body> </html>

    過濾器

    在AngularJS中使用過濾器格式化展示數據, 在“{{}}”中使用“|”來調用過濾器,使用“:”傳遞參數。

    1.內置過濾器

    日期過濾器 {{now|date:’yyyy-MM-dd hh:mm:ss’}}

    貨幣符號過濾器 {{price|currency}}

    • 默認是美元符號
    • 如果想要顯示其它貨幣符號
    {{price|currency:'¥'}} 這樣顯示的就是人民幣符號

    保留指定位數的小樹

    {{price|currency:'¥':2}}這樣顯示的就是人民幣符號 并四舍五入保留兩位小數

    轉換為大寫

    {{info|uppercase}}將info的值轉換為大寫顯示

    轉換為大寫

    {{info|lowercase}}將info的值轉換為大寫顯示

    截取數組/字符串中指定位數的元素.

    {{arr|limitTo:n}}正數從左往右截取n個元素負數從右往左截取n個元素arr可以是1個數組也可以是一個字符串.字符串的話就截取每一個字符.

    處理數字的過濾器number可以控制小數的位數

    {{num|number:2}} 保留2位小數輸出.

    json過濾器 將對象轉換為json字符串

    {{obj|json}} 將obj對象轉換為json字符串輸出.實際上,不使用json過濾器它也會這么做.

    orderBy過濾器

    {{students|orderBy:'score'}} 將student數組中的對象以score屬性為參照進行排序 默認是升序.{{students|orderBy:'score':true}} 降序

    filter 過濾器

    {{students|filter:{score:90} }} 過濾出數組中對象分數等于90的對象.特別注意: 參數對象必須和后面的大括弧有一個空格.

    自定義過濾器

    模塊對象提供了一個filter方法,允許我們自定義過濾器.
    該方法的參數說明

    • 第一個參數: 過濾器名稱
    • 第二個參數: 回調函數 - 當執行我們自定義的過濾器的時候,就會自動來執行這個回調函數.

      <div ng-controller="demoCtrl">{{name|highven}} </div><script>var app = angular.module('hmApp', []);app.controller('demoCtrl', ['$scope', function ($scope) {$scope.name = "jack";}])app.filter('highven',function () {console.log("我被執行了");}); </script>

    通過調試發現,回調函數確實被執行了,但是報錯了.報錯的原因是我們沒有按照要求來寫這個回調函數的參數和返回值.
    要求這個回調函數必須返回一個函數.
    返回的這個函數就是過濾器,來處理過濾數據的.
    這個返回的函數
    * 第1個參數: 需要處理過濾的數據.
    * 后面的參數: 處理數據的時候,自己還需要的另外的參數
    * 返回值: 處理完畢后返回的數據,被顯示出來.

    <!-- 就會將name傳遞給自定義過濾器返回的函數處理 最終顯示函數的返回值 --> <span>{{name|highven}}</span> <script>app.filter('highven',function () {return function(data){return data+"哈哈";}}); </script>

    自定義過濾器案例:將一個英文句子中首個單詞的首字母大寫.

    app.filter('firstBig',function () {return function (data) {return data[0].toUpperCase()+data.slice(1);//slice從指定位置提取字符串 沒有第2個參數就一直提到最后.}});

    依賴注入

    Angular內部封裝了很多的模塊,我們作為開發者在進行開發的時候,直接拿來使用就行, 也就是說,如果我們要使用別人封裝好的模塊,就必須要先引入別人的模塊. 沒有這個模塊,可能就實現不了這個功能. 也就是我們依賴于這個模塊. 比如jQuery是我們依賴的.

    理解依賴注入
    * 依賴關系: 就是模塊之間的依賴關系.比如bootstrap依賴于jQuery,它們之間的關系就是依賴關系.

    • 依賴解決: 建立這種依賴關系的方案.比如之前我們使用1個script.src來解決依賴關系.

    • 注入: 是解決依賴的另外一種方式. 你可以形象的理解,A依賴于B,那么就像打針一樣,把B注入 到A中,那么A中就可以使用B了.它們的依賴關系就建立成功了.

    • 所以,依賴注入是建立依賴關系的一種方式.

    1.行內式注入

    在視圖中之所以能夠訪問到控制器綁定到 scope, scope的存在.
    實際上, scopeAngular.使.調,使 scope模塊.
    所以,這個回調函數必須要依賴$scope模塊.
    創建控制器的時候.第2個參數是一個數組.
    數組的最后一個元素是控制器的回調函數.
    前面的元素其實就是表明回調函數要依賴Angular的那些模塊.

    app.controller('demoCtrl', ['$scope', function ($scope) {}])
    • 第1個元素. ‘ scope scope這個模塊.
    • 回調函數的參數: Angular會將$scope模塊通過函數的形參注入到函數的內部,
      讓函數去使用.
    • 實際上,回調函數的形參是可以任意的,
      這里之所以取得和模塊的名字一樣,是為了讓我們的代碼看起來更加具備可讀性.

    • Angular提供的模塊還有很多,我們也可以將其注入到控制器中.

    app.controller('demoCtrl', ['$scope','$http' function ($scope,$http) {}]) 表明,控制器要依賴$scope模塊和$http模塊. 那么這個時候,Angular會將這兩個模塊通過函數的形參`按照順序`注入.

    這樣的注入方式,我們就叫做行內式注入

    <body><div ng-controller="demoCtrl"><!-- 之所以能在這里訪問控制器中綁定到$scope的name數據.完全是因為$scope的存在.實際上,$scope是ng的一個模塊,這個模塊是直接可以在視圖中訪問的.但是在控制器的回調函數中,無法直接訪問使用這個$scope模塊那么就需要將這個$scope模塊注入到控制器的回調函數中--><span></span></div><script>var app = angular.module('hmApp', []);/** 第二個參數是一個數組.* 數組的第一個元素, '$scope'表示控制器要依賴 $scope 這個模塊.* Angular會通過回調函數的參數將$scope模塊注入到回調函數內部.* 供控制器回調函數內部使用.* 這個時候,回調函數內部就可以通過形參拿到$scope這個模塊.* 將其與視圖共享之,傳遞數據之.*/app.controller('demoCtrl', ['$scope', function ($scope) {$scope.name = "杰克";}])</script></body>
  • 推斷式注入

    推斷式注入的寫法很簡單,第2個參數直接寫1個回調函數就可以.

    app.controller('demoCtrl', function ($scope) {$scope.name = "杰克"; });

    Angular在注入的時候,會根據回調函數的參數名稱進行推斷.
    如果參數名稱是 scope, scope這個模塊進行注入
    如果參數名稱是 http, http這個模塊進行注入
    所以,使用這種注入方式,回調函數的形參必須要和Angular的模塊名稱一致.否則將無法注入.
    推斷式注入的缺點: 當進行代碼壓縮的時候,就會出問題,因為代碼壓縮會將形參替換.那么這個時候Angular就無法正常注入了.
    所以,我們推薦使行內式注入

  • Angular服務

    服務,可以理解為就是一個對象或者函數,對外提供特定的功能.
    其實你完全可以認為它就是一個模塊,不同的模塊提供不同的功能.
    當我們要使用某1個模塊的時候,將其注入到控制器中便可以使用

    log服務

    作用:在控制臺輸出調試信息. $log是1個對象.
    調試信息分為如下幾個級別.
    * error 錯誤信息
    * debug debug信息
    * info 打印信息
    * log 正常打印日志
    * warn 警告信息

    分別調用$log對象的這幾個方法就可以輸出對應格式的信息.
    注意: 要正確調整瀏覽器控制臺log過濾

    $timeout服務

    作用:在指定的時間做事情,$timeout是一個函數.

    js
    <body>
    <div ng-controller="demoCtrl">
    <!--所以,這里的name也要等到3秒鐘后才會顯示出來.-->
    <p>我的名字叫做{{name}}</p>
    </div>
    <script>
    var app = angular.module('hmApp', []);
    app.controller('demoCtrl', ['$scope','$timeout', function ($scope,$timeout) {
    $scope.now = new Date();
    //表示3秒鐘后為name賦值
    $timeout(function () {
    $scope.name = "小明";
    },3000);
    }]);
    </script>
    </body>

    $interval服務

    作用:每隔指定的時間就做指定的事情.

    <body><div ng-controller="demoCtrl"><!--所以,這里的數據每一秒鐘就變化一次--><p>現在時間是:{{now|date:'yyyy-MM-dd HH:mm:ss'}}</p></div><script>var app = angular.module('hmApp', []);app.controller('demoCtrl', ['$scope','$interval', function ($scope,$interval) {$interval(function () {$scope.now = new Date();},1000);//每隔一秒鐘就為now重新賦值.}]);</script></body>

    interval,1.調 interval.cancel(返回值)可以停止計時器

    <body><div ng-controller="demoCtrl"><p>現在時間是:{{now|date:'yyyy-MM-dd HH:mm:ss'}}</p><button ng-click="stop()">停止</button></div><script>var app = angular.module('hmApp', []);app.controller('demoCtrl', ['$scope','$interval', function ($scope,$interval) {var stop = $interval(function () {$scope.now = new Date();},1000);$scope.stop = function () {$interval.cancel(stop);}}]);</script></body>

    $filter服務

    作用:格式化數據 filter1., filter在控制器中格式化數據.
    用法實際上,和過濾器用法非常相像.并且$filter服務支持自定義過濾器

    var item = $filter('過濾器名稱'); //返回值是1個函數.var val = item(待格式化的數據,過濾器參數...);//返回值就是過濾器格式化后的數據

    案例演示 :

    <body><div ng-controller="demoCtrl"><ul><li><span>現在時間是:{{now}}</span></li><li><span>{{intro}}</span></li></ul></div><script>var app = angular.module('hmApp', []);app.controller('demoCtrl', ['$scope','$filter',function ($scope,$filter) {//傳入date 返回的函數就是和處理日期相關的函數var date = $filter('date');//第1個參數: 待處理的日期數據//第2個參數: 過濾器參數//返回值:被處理過的數據$scope.now = date(new Date,'yyyy-MM-dd HH:mm:ss');var uCase = $filter('uppercase');$scope.intro = uCase('this is itcast!');}]);</script></body>

    $http服務

    1.$http服務基本使用

    作用:用于向服務器發送異步請求 這是1個函數.
    參數:傳入1個符合條件的對象.
    * url:請求地址
    * method:請求方式get/post
    * data:{} 當請求方式為post的時候 使用data傳遞數據.
    * params:{} 當請求方式為get的時候,使用params傳遞數據.
    * headers:{} 設置請求頭信息
    * .then()函數傳入兩個回調函數.
    * 第1個回調,當請求成功后執行,參數info。通過info.data拿到返回的數據
    * 第2個回調,當請求失敗后執行.

    案例演示

    <body><div ng-controller="demoCtrl"><table><tr><th>姓名</th><th>年齡</th></tr><tr ng-repeat="stu in data"><td>{{stu.name}}</td><td>{{stu.age}}</td></tr></table></div><script>var app = angular.module('hmApp', []);app.controller('demoCtrl', ['$scope','$http',function ($scope,$http) {$http({url:'example.php',method:'get'}).then(function (info) {$scope.data = info.data;},function () {});}]);</script></body>

    2. $http服務傳遞數據的 格式

    當請求類型是get時,向服務器傳遞的數據必須要放在params中,以對象的形式.
    get請求發送的數據格式是 queryString類型的

    <div ng-controller="loginCtrl">用戶名: <input type="text" ng-model="uName"><br>密碼: <input type="password" ng-model="pwd"><br><button ng-click="login()">登錄</button></div><script>app.controller('loginCtrl', ['$scope', '$http',function ($scope,$http) {$scope.login = function () {$http({url:'login.php',method:'get',params:{uName:$scope.uName,pwd:$scope.pwd}}).then(function (info) {}).catch(function () {});}}]);</script>

    當請求類型是post時,向服務器發送的數據必須要放在data中.
    設置發送數據的類型.
    data要以鍵值對的字符串形式.
    客戶端以post方式向服務器發送數據時.必須要指定發送數據的類型.
    因為不同的數據格式在服務器處理的方式是不一樣的.
    常見的數據格式
    application/json –> 這種格式叫做formdata
    application/x-www-form-urlencoded –> 這種格式叫做payload
    jQuery的Ajax默認的數據類型就是application/x-www-form-urlencoded
    AngularJS的$http默認支持的是application/json

    $http跨域

    基于瀏覽器的同源策略,Ajax異步是無法實現跨域請求的.
    實現跨域請求的解決方案
    * src屬性是天然支持跨域的.
    * 所以,我們可以利用script標簽的src屬性來跨域請求數據.
    * 如果使用script標簽的src屬性來跨域請求,會將請求回來的數據作為js代碼執行.

    3.1 AngularJS的跨域

    AngularJS已經幫我們封裝好了一切.

    $http({url:'',//請求地址method:'jsonp', //jsonp就可以(只支持不帶有 . 的callback接口)params:{//傳遞額外數據.}}).then(function(info){}).catch(function(){});

    自定義服務

    1. 使用factory自定義服務

    模塊對象有一個方法叫做factory允許我們自定義服務.
    該方法需要兩個參數

    • 第1個參數,服務名稱.
    • 第2個參數,是1個數組,前面的元素寫依賴,最后一個元素是回調函數.
    <script>var app = angular.module('hmApp', []);//第1個參數:自定義服務名稱//第2個參數:數組,依賴 最后1個回調函數.app.factory('highven',[function () {console.log('這是我們自定義的服務!');}]);//在控制器中如果要使用我們自定義的服務,一樣的方式注入就可以使用.//這樣在注入的時候,就會執行我們自定義服務的回調函數.//拿到的就是這個回調函數的返回值.app.controller('demoCtrl', ['$scope','highven', function ($scope,highven) {}]); </script>

    這么寫會報錯,原因是回調函數我們沒有按照AngularJS的要求來寫返回值.
    語法上,自定義服務的回調函數允許返回任意的值,但是既然是1個服務,1個模塊,就應該返回1個功能,所以一般情況下,自定義服務的回調函數我們返回1個函數或者1個對象

    var app = angular.module('hmApp', []); // 我們自定義服務依賴于另外一個服務 app.factory('highven',['$filter',function ($filter) {return {now:function () {var date = $filter('date');var time = date(new Date,'yyyy-MM-dd HH:mm:ss');return time;},format:function (format) {return $filter('date')(new Date,format);}} }]); //在控制器中如果要使用我們自定義的服務,一樣的方式注入就可以使用. //這樣在注入的時候,就會執行我們自定義服務的回調函數. //注入的自定義服務,就是自定義服務回調函數返回的數據. app.controller('demoCtrl', ['$scope','highven',function ($scope,highven) {highven.now();highven.format('HH:mm:ss'); }]);

    2. 使用service自定義服務

    模塊對象有1個方法叫做service,也能自定義服務.
    該方法有兩個參數
    * 第1個參數,自定義服務的名稱
    * 第2個參數,數組,依賴,最后1個是回調函數.
    與factory不同的是,service不需要手動返回數據.
    直接用this,為返回的對象添加屬性或者方法.
    所以,service與factory的區別就像構造函數與工廠方法的區別

    <body><div ng-controller="demoCtrl"><ul><li>現在時間是:</li><li>現在時間是:</li></ul></div><script>var app = angular.module('hmApp', []);app.service('highven',['$filter',function ($filter) {this.now = function () {return $filter('date')(new Date,'yyyy-MM-dd HH:mm:ss');};this.format = function (format) {return $filter('date')(new Date,format);}}])app.controller('demoCtrl', ['$scope','highven',function ($scope,highven) {$scope.time = highven.now();$scope.now = highven.format('HH:mm:ss')}]);</script></body>

    配置塊

    在AngularJS執行流程中的配置和運行這一流程,允許開發者對AngularJS的模塊進行自定義的配置.
    這樣就可以讓后續ng的執行按照我們的意愿來.
    模塊對象提供了一個config方法,允許我們ng模塊進行配置.
    * 需要1個參數 這個參數是1個數組
    * 數組中,寫上開發者需要配置的模塊Provider.最后是1個回調函數.給回調函數注入模塊.
    * 在回調函數中,對模塊進行配置.
    每一個服務,都對應一個Provider,比如 log logProvider, http httpProvider ……
    在通過config方法配置模塊的時候,其實是通過模塊對應的Provider來進行配置的.

    //將要配置的Provider注入到函數中,進行配置.//這個Provider提供了相應的方法對模塊進行配置.app.config(['$logProvider',function($logProvider){$logProvider.debugEnabled(false);}]);

    1.配置$filter

    每一個Provider都有自己的方法,我們不可能記住,也記不住.
    所以,建議大家勤查AngularJS官方API

    <!DOCTYPE html><html lang="en" ng-app="hmApp"><head><meta charset="UTF-8"><title>Title</title><script src="lib/angular.min.js"></script></head><body><div ng-controller="demoCtrl">{{info|bigFirst}}</div><script>var app = angular.module('hmApp', []);app.config(['$logProvider',function ($logProvider) {$logProvider.debugEnabled(false);}]);app.config(['$filterProvider',function ($filterProvider) {//新增過濾器.$filterProvider.register('bigFirst',function () {return function (input) {return input[0].toUpperCase()+input.slice(1);}});}]);app.controller('demoCtrl', ['$scope','$log', function ($scope,$log) {$scope.info = "this is itcast!";}]);</script></body></html>

    2.配置$http跨域白名單

    app.config(['$sceDelegateProvider', function ($sceDelegateProvider) {// 設置白名單$sceDelegateProvider.resourceUrlWhitelist(['http://api.map.baidu.com/telematics/v3/weather']);}])$http({url:'http://api.map.baidu.com/telematics/v3/weather',method:'jsonp',params:{ak:'0A5bc3c4fb543c8f9bc54b77bc155724',location:'深圳市',output:'json'}}).then(function (info) {console.log(info)});

    運行塊

    AngularJS中的模塊(服務)我們都是以注入的方式來使用的.
    實際上,AngularJS中的模塊是可以獨立運行的.
    模塊對象提供了一個run方法,可以直接運行某些服務.不需要依賴控制器.
    * 需要1個參數,這是1個數組.
    * 在數組中寫上要運行的模塊,最后一個是1個回調函數.順序注入.
    * 在這個回調中的代碼就會在配置運行階段執行.
    常見的模塊.
    * http,ajax? rootscope 為這個服務追加數據,就相當于追加到了根作用域中. 相當于ng-init
    * $log
    * ……

    案例:

    <body><div ng-controller="demoCtrl"></div><script>var app = angular.module('hmApp', []);app.run(['$log','$http','$rootScope',function ($log,$http,$rootScope) {//在這里可以脫離控制器使用模塊對象.//$rootScope 模塊代表根作用域,往其中追的數據就相當于是追在了根作用域中.$rootScope.name = "杰克";//在所有的作用域中都可以訪問.}])app.controller('demoCtrl', ['$scope', function ($scope) {}]);</script></body>

    AngularJS的路由

    1. AngularJS路由的簡單使用

    實現單頁面的原理
    * 通過hashchange事件監聽到錨點的變化,進而可以實現為不同的錨點顯示不同的視圖,單頁面應用就是基于這一原理實現的。
    AngularJS對這一實現原理進行了封裝,將錨點的變化封裝成路由(Route)。

    1.2版前路由功能是包含在AngularJS核心代碼當中,之后的版本將路由功能獨立成一個模塊,angular-route.js

    將angular-route.js引入到當前項目中.

    <head><meta charset="UTF-8"><title>Title</title><script src="lib/angular.min.js"></script><script src="lib/angular-route.js"></script></head>

    然后創建模塊應用,需要注意的是,我們現在創建的模塊應用要依賴于ngRoute模塊.

    <script>var app = angular.module('hmApp', ['ngRoute']);//新創建的模塊要依賴于 ngRoute 模塊app.controller('demoCtrl', ['$scope', function ($scope) {}])</script>

    只要app模塊運行了,那么ngRoute模塊就會被自動運行.
    但是,ngRoute需要進行配置后才可以正常工作
    ngRoute的服務名叫做 route, routeProvider
    * 默認情況下,錨鏈接必須以#!開頭.
    * 然后調用$routeProvider的when方法進行配置
    * 第1個參數: 匹配到的hash值.hash值從#!后開始.
    * 第2個參數: 匹配到以后,做什么事情.templateUrl要請求的資源路徑.

    app.config(['$routeProvider',function ($routeProvider) {$routeProvider.when('/home',{templateUrl:'data/home.json'}).when('/my',{templateUrl:'data/my.json'}).when('/find',{templateUrl:'data/find.json'}); }]);

    然后指定1個ng-view,表示將請求來的資源加到這個元素下.

    <div class="container" ng-controller="demoCtrl"><ul><li><a href="#!/home">首頁</a></li><li><a href="#!/my">我的音樂</a></li><li><a href="#!/find">發現音樂</a></li></ul><div class="content" id="content" ng-view></div></div>

    路由配置

    when方法的第2個參數說明
    * templateUrl,代表要請求的資源的路徑.模板路徑.
    * template, 字符串形式的模板.
    * controller,模板與控制器建立聯系,建立起聯系后,就可以使用控制器操作視圖了.
    * redirectTo,挑轉到其它路由.
    * otherwise方法,如果所有的when都匹配不上,就otherwise

    app.config(['$routeProvider',function ($routeProvider) {$routeProvider.when('/home',{templateUrl:'data/home.json'}).when('/my',{templateUrl:'data/my.json'}).when('/find',{templateUrl:'data/find.json'}).otherwise({//所有when都無法匹配的時候.});}]);

    3.配置$locationProvider

    hashPrefix方法,用來配置錨點值的前置符號.默認是嘆號!

    當然我們可以自定義這個前置符號.

    app.config(['$locationProvider',function ($locationProvider) {$locationProvider.hashPrefix('');//不設置前置 #/index//$locationProvider.hashPrefix('@');設置前置 #@/index}]);

    為什么默認哈希前置設置為!

    • 如果網站內容是通過Ajax異步請求的.搜索引擎是看不到內容的.
    • 如今單頁面應用比較受追捧,搜索引擎進行了升級.其也能夠獲得ajax異步的數據.比如Google
    • 但是有個前提,通過地址上某些符號來分辨哪些網站是ajax異步的.谷歌認為#!是異步的.

    4. 路由參數

    QueryString參數不影響路由.
    使用$routeParams服務,可以獲取路由參數.

    http://localhost/index.html#/home?id=1&user=jack

    在控制器視圖加載的時候,就會執行控制器代碼,在這個控制器中可以注入$routeParams服務,取到QueryString參數

    <script>var app = angular.module('hmApp',['ngRoute']);app.config(['$routeProvider','$locationProvider',function ($routeProvider,$locationProvider) {$locationProvider.hashPrefix('');$routeProvider.when('/login',{templateUrl:'./login.html'}).when('/register',{templateUrl:'./register.html'}).when('/list',{templateUrl:'./list.html',controller:'listCtrl'}).otherwise({});}]);app.controller('listCtrl',['$scope','$routeParams',function ($scope,$routeParams) {//在控制器被加載的時候,加載這個視圖傳遞的QS參數,可以通過$routeParams服務拿到.$scope.lessons = ['html','css','js','java'];console.log($routeParams);}]);</script>

    5.路由參數的另外一種形式

    寫在when方法的第一個參數上使用:參數的形式

    when('/register/:id',{templateUrl:'./register.html',controller:'regCtrl' })

    那么在傳遞的時候, 使用這樣的格式 index.htlm#/register/4,控制器拿到的參數就是{id:”4”}
    再比如使用如下的when參數

    when('/register/page/:page',{templateUrl:'./register.html',controller:'regCtrl' })

    那么在傳遞的時候, 使用這樣的格式 index.htlm#/register/page/4,控制器拿到的參數就是{page:”4”}
    需要注意的是,參數必須使用冒號:

    比如:

    when('/list/page/:page/name',{templateUrl:'./register.html',controller:'regCtrl' })

    那么在傳遞的時候, 使用這樣的格式 index.htlm#/list/page/4/name,控制器拿到的參數就是{page:”4”}
    如果希望沒有值也能匹配到.加問號

    when('/register/page/:page?',{ //可以寫1個問號,表示后面沒有數據的話也可以匹配到.templateUrl:'./register.html',controller:'regCtrl' })

    jQuery Lite

    • AngularJS不建議我們進行DOM操作.因為DOM的更新會隨著數據模型的變* 化而自動變化.
    • 但是總會在某些時候,我們還是希望操作DOM的.
    • AngularJS為我們封裝了一個輕量版的jQuery.
    • 調用全局對象angular的一個element方法,可以將1個原生的DOM對象轉換為一個jQuery對象.
    • 然后可以使用這個jQuery對象的方法進行DOM操作.
    • 需要注意的是,這僅僅是Angular提供的一個輕量級的jq,所以僅僅是包裝了jq常用的方法.
      • 如果我們的頁面上引入了jQuery庫,那么angular.element() 完全等價于 jQuery().
      • 如果我們的頁面上沒有引入jQuery庫,那么就會使用ng內置的的一個迷你版本的jQuery,叫做jqLite。
      • jqLite中只提供了常用的方法. 比如animate方法就沒有.

    總結

    以上是生活随笔為你收集整理的Angular的学习的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    日韩欧美综合 | 国产精品18毛片一区二区 | 欧美一二三专区 | 亚洲影视九九影院在线观看 | 欧美日韩国产免费视频 | 免费性网站 | 亚洲精品一区二区网址 | 在线免费看黄网站 | 最近中文字幕在线播放 | 精品超碰 | 正在播放一区二区 | 91激情视频在线观看 | 成人免费看电影 | 中文av不卡 | 中日韩欧美精彩视频 | 日日操网站 | 久久福利精品 | 色婷婷激情电影 | 手机av网站 | 日韩成人邪恶影片 | 亚洲天堂色婷婷 | 国产丝袜 | 99精品在线免费在线观看 | 婷婷丁香激情综合 | av福利在线导航 | 亚洲美女精品 | 成人在线观看免费 | 狠狠色噜噜狠狠 | 久久韩国免费视频 | 四虎8848免费高清在线观看 | 18久久久 | 国产日韩欧美在线播放 | 日韩欧美综合视频 | 成人h在线 | 91天堂素人约啪 | 亚洲天堂首页 | 亚洲狠狠婷婷综合久久久 | 黄色毛片观看 | 91久久丝袜国产露脸动漫 | 免费国产一区二区视频 | 丁香婷婷综合网 | 中文在线资源 | 丝袜护士aⅴ在线白丝护士 天天综合精品 | 亚洲黄色在线观看 | 国产伦精品一区二区三区照片91 | av在线免费网 | 国产免费三级在线观看 | 天天干天天做天天爱 | 国产在线国产 | 最近字幕在线观看第一季 | 91精品婷婷国产综合久久蝌蚪 | 成年人黄色在线观看 | 日韩精品在线视频 | 久久天天躁夜夜躁狠狠85麻豆 | 婷婷在线免费观看 | 综合激情网| 国产精品久久久久久久午夜片 | 日韩精品欧美专区 | av大全在线免费观看 | 高清av免费看 | 日韩欧美xxxx | 亚洲爱av | 久久久久久久国产精品 | 黄色特一级片 | www.com操 | 亚洲电影影音先锋 | www.久久91 | 97福利 | 区一区二区三区中文字幕 | 免费看黄在线观看 | 九色91在线 | 久久tv| 亚洲日本韩国一区二区 | 国产成人av福利 | 日韩精品一区二区三区免费观看视频 | 亚洲高清久久久 | 久久伦理电影网 | 欧美一区二区三区四区夜夜大片 | 最近中文字幕大全中文字幕免费 | 国产欧美精品一区二区三区四区 | 在线看国产 | 国产成人av网站 | 国产午夜不卡 | 亚洲国内在线 | 国产福利91精品一区二区三区 | 国产视频一区精品 | 国产精品岛国久久久久久久久红粉 | 中文字幕在线精品 | 日韩在线首页 | 日韩欧美在线综合网 | 日韩av手机在线观看 | 久久激情电影 | 色婷婷av在线 | 免费a级大片 | 9992tv成人免费看片 | 成人免费看电影 | 又黄又爽又色无遮挡免费 | 久久精品视频国产 | 九色免费视频 | 在线免费观看涩涩 | 丁香婷婷色综合亚洲电影 | 波多野结衣网址 | 中文字幕av一区二区三区四区 | 91免费观看视频网站 | 国产一级a毛片视频爆浆 | 欧美精品做受xxx性少妇 | 一区二区视频在线免费观看 | 国产精品爽爽久久久久久蜜臀 | 国产一线天在线观看 | 国产高清在线不卡 | 国产精品福利在线播放 | 蜜臀久久99静品久久久久久 | 免费av福利 | 国产精品a级 | 欧美另类视频 | 午夜视频二区 | www.91av在线 | 最近2019中文免费高清视频观看www99 | 久久人视频 | 波多野结衣精品 | 久久三级毛片 | 久草久热 | 亚洲国产成人在线播放 | 欧美日韩国产页 | 狠狠色丁香九九婷婷综合五月 | 婷婷国产一区二区三区 | 久久精品久久精品久久精品 | 久久精品999 | 亚洲不卡在线 | 欧美久久九九 | 97色综合 | 日韩精品免费在线播放 | 中文字幕亚洲情99在线 | 色欧美视频 | 免费视频区 | 久久久久国产精品厨房 | 91自拍成人 | 国产精品亚洲人在线观看 | 在线激情av电影 | 欧美日韩国产色综合一二三四 | 中文字幕色播 | freejavvideo日本免费 | 国产 精品 资源 | 最新日韩视频在线观看 | 在线观看免费观看在线91 | 亚洲伦理中文字幕 | 精品人妖videos欧美人妖 | 午夜久久久久 | 久久国产热视频 | 久久精品成人 | 又黄又爽又湿又无遮挡的在线视频 | 免费日韩av片 | 欧美一级裸体视频 | 在线看片一区 | www.夜夜夜 | 夜色.com | 国产黑丝一区二区 | 久久久免费看片 | 欧美成人在线免费 | 免费中文字幕 | 精品国产99 | 少妇bbw搡bbbb搡bbb | 最近乱久中文字幕 | 国产精品99在线观看 | 欧美视频在线观看免费网址 | 国产亚洲精品久久久久久无几年桃 | 白丝av免费观看 | 日本精品一区二区三区在线播放视频 | 少妇bbbb | 久草视频看看 | 色久av | 日韩亚洲在线 | 久草在线免费新视频 | 亚洲精品tv | 在线观看黄网站 | 中文字幕一区二区三区乱码不卡 | 亚洲国产三级在线 | 亚洲综合在线五月天 | 色综合久久久久综合 | 欧美动漫一区二区三区 | 91亚洲欧美激情 | 日日干av | 在线免费黄色片 | 久久欧美综合 | 九九有精品| 91成人蝌蚪| 久操中文字幕在线观看 | 国产手机视频在线播放 | 午夜天使 | 五月天久久久久 | 久久99精品一区二区三区三区 | 欧美精品九九99久久 | 国产精品短视频 | 午夜 免费 | 亚洲欧美国内爽妇网 | 国产一区网址 | 精品久久综合 | 久久理论电影 | 婷婷丁香激情综合 | 在线亚洲精品 | 国精产品999国精产品岳 | 五月天激情综合 | 亚洲电影在线看 | 国产精品成人一区二区 | 91chinesexxx| av资源网在线播放 | 欧美在线观看视频一区二区三区 | 日批视频在线观看免费 | 在线观看久久 | 夜夜操狠狠操 | 毛片一二区 | 天天干中文字幕 | 国产日产精品一区二区三区四区的观看方式 | 在线高清av | 午夜 在线 | 91视频免费国产 | av天天干 | 免费在线黄色av | 99亚洲国产| 亚洲天天综合 | 久久麻豆视频 | 国产一区二区网址 | 婷婷久久精品 | 欧美一级性生活视频 | 久久九九精品 | 日韩在线播放欧美字幕 | 婷婷狠狠操 | 91精品在线视频 | 亚洲最快最全在线视频 | 久久久久国产精品午夜一区 | 一区二区三区电影 | 久久久久蜜桃 | 在线观看精品视频 | 亚洲国产精品影院 | 精品天堂av| www.久久色 | 久久激情五月丁香伊人 | 久久精品久久精品久久精品 | 国产精品女同一区二区三区久久夜 | 久久综合久久久久88 | 四虎在线观看精品视频 | 国产视频导航 | 久久国产精品精品国产色婷婷 | 免费一级日韩欧美性大片 | 精品国产视频在线 | 日韩天天干 | 丁香婷婷激情国产高清秒播 | 婷婷五综合 | 亚洲一区 影院 | 91精品国产乱码久久 | 最新国产精品亚洲 | 日韩av影视在线观看 | 高清免费在线视频 | 国产特级毛片 | 久久香蕉一区 | 91视频在线自拍 | 久久热亚洲 | 首页av在线| 国产91学生粉嫩喷水 | 日本在线观看视频一区 | 99久久er热在这里只有精品66 | 国产3p视频 | 免费观看丰满少妇做爰 | 精品一二 | 在线观看色视频 | 国产精品com | 综合中文字幕 | 久久久久久久久久影视 | 欧美日韩免费在线观看视频 | 成人亚洲免费 | 成人免费视频网 | 青春草国产视频 | 久久一区精品 | 亚洲涩涩涩| 99精品视频在线免费观看 | 一级a毛片高清视频 | 国产一级二级三级在线观看 | 激情六月婷婷久久 | 久久伊人91| 久久激情婷婷 | 在线观看免费一区 | 深爱开心激情网 | 亚洲精品视频偷拍 | 天天草天天插 | 日韩中文字幕a | 女人18毛片a级毛片一区二区 | 91免费看片黄 | 九色福利视频 | 狠狠色狠狠色合久久伊人 | 久久午夜精品 | 美女在线观看网站 | 二区三区中文字幕 | 久久久午夜精品理论片中文字幕 | 成人免费影院 | 久草精品视频在线观看 | 麻豆视频观看 | 国产精品亚 | 日韩av手机在线观看 | 91欧美日韩国产 | 久久爱导航 | 日本中文字幕观看 | 国产精品一区二区中文字幕 | 九九热中文字幕 | 天天看天天干 | 蜜臀av性久久久久蜜臀aⅴ涩爱 | 欧美日韩国内在线 | 久久资源总站 | 一区二区视 | 日韩久久激情 | 免费h精品视频在线播放 | 欧美日韩一区二区在线观看 | 免费观看第二部31集 | 丁香视频| 色a4yy| 在线免费性生活片 | 亚洲国产黄色片 | 成人 国产 在线 | 精品九九九 | 欧美精品久久久久久久 | 日韩一区二区三区在线观看 | 国产精品 日韩 欧美 | 肉色欧美久久久久久久免费看 | 91精品国自产在线 | 国产成人精品免高潮在线观看 | 精品婷婷 | 日韩欧美xxx | 久久免费视频这里只有精品 | 久久99日韩 | 在线观看日本韩国电影 | 久久av伊人 | 日韩免费视频线观看 | 欧美日韩精 | 国产亚洲精品免费 | 一区二区三区日韩在线 | 国产流白浆高潮在线观看 | 久久久久久久亚洲精品 | 欧美日韩国产精品一区 | 激情五月伊人 | 91精品办公室少妇高潮对白 | 国产精品福利一区 | 亚洲在线国产 | 亚洲精品在线国产 | 高清免费在线视频 | 美女网站在线观看 | 午夜电影一区 | 69久久夜色精品国产69 | www日韩欧美 | 久久伊人热 | 久草网免费 | 久久久久久久电影 | 8x成人免费视频 | 综合铜03 | 国产精品门事件 | 天堂va欧美va亚洲va老司机 | 日韩com | 美女网站在线观看 | 免费视频 你懂的 | 美女久久久久久久 | 成人黄色电影在线观看 | 日韩av一区二区三区 | 欧美日韩国产二区 | 美女啪啪图片 | 视频一区二区在线观看 | 天天激情站| 欧美在线日韩在线 | 五月婷婷丁香 | 九九激情视频 | 免费电影一区二区三区 | 五月婷婷激情 | 国产亚洲精品xxoo | 91最新在线观看 | 96av视频 | 国产黄色免费 | 亚洲午夜精品在线观看 | 97精品在线视频 | 国产高清视频免费 | 久久免费电影 | 日本高清久久久 | 国产麻豆视频免费观看 | 国产高清在线免费视频 | 国内99视频 | 国产91精品久久久久久 | 午夜精品一区二区三区免费 | 日韩精品视频在线观看免费 | 日韩精品网址 | 中文在线字幕观看电影 | 中文字幕制服丝袜av久久 | 国产精品成人自产拍在线观看 | 在线免费观看国产视频 | 中文字幕视频一区二区 | av色影院 | 国产精品手机在线播放 | 五月综合在线观看 | 在线观看你懂的网址 | 久草在线视频新 | 天天操比| 久久影视中文字幕 | av一区二区三区在线播放 | 国产精品久久久久久五月尺 | 怡红院av久久久久久久 | 久久精品久久精品久久精品 | 91污在线观看| 久久av网址| 亚洲三级黄色 | 天天操天天干天天综合网 | 99视频在线精品免费观看2 | 国产精品久久三 | 91久久影院| 在线免费观看欧美日韩 | 色九色| 亚洲婷婷在线视频 | 天天色综合1 | 午夜丰满寂寞少妇精品 | 国产亚洲欧洲 | 国产尤物在线视频 | av中文资源在线 | 国产69精品久久久久久 | 国产在线观看91 | 久草久视频 | 99爱精品视频 | av网址在线播放 | 人人射人人插 | 精品免费国产一区二区三区四区 | 亚洲成人资源在线观看 | 中文字幕在线有码 | 成人av在线网址 | aaa日本高清在线播放免费观看 | 国产美女精品视频免费观看 | 丁香网婷婷 | 国产手机视频精品 | 亚洲欧美偷拍另类 | 一区二区精品视频 | 免费日韩 精品中文字幕视频在线 | 国产成人三级 | 黄色免费网站 | 99精品免费在线 | 97精品国产91久久久久久 | 国内亚洲精品 | 中文字幕在线播放日韩 | 免费看av在线| 亚洲天堂精品视频在线观看 | 国产精品69久久久久 | 天天干天天操天天入 | 国产精品久久久久三级 | 欧美性色综合网 | 亚洲精品日韩一区二区电影 | 国产三级香港三韩国三级 | 久久女教师 | 久草视频免费在线播放 | 美女黄久久 | 国产一级不卡毛片 | 中文在线亚洲 | 亚洲精品视频在 | 亚洲激情网站免费观看 | 欧美激情操 | 麻豆免费在线播放 | a视频在线 | 日韩av电影手机在线观看 | 亚洲激情久久 | 中文字幕色站 | 国产一区高清在线 | 深夜免费网站 | 日本系列中文字幕 | 一区二区三区免费播放 | 国产精品免费久久久久久久久久中文 | 国产一级片视频 | 444av| 天天天天色综合 | 午夜色大片在线观看 | www.久艹| 欧美一级性视频 | 操操综合网 | 欧美一区二区三区在线播放 | 人人爱爱 | 久久狠狠干 | 9幺看片| 国产黄色a | 欧美一级片免费 | 天天操月月操 | 美女精品国产 | 国产成人亚洲在线观看 | 国产91丝袜在线播放动漫 | 国产成人免费av电影 | 亚洲开心色| 免费中文字幕视频 | 亚洲精品国产欧美在线观看 | 久久久久久久毛片 | 91在线视频免费播放 | 久久久这里有精品 | 国产中文视 | 香蕉影院在线 | 免费福利小视频 | 激情片av | 欧美天天综合网 | 99热.com| 国产视频亚洲精品 | 国产精品久久久久久久久久久久午夜片 | 狠狠狠的干| 天天艹 | 黄色日视频 | av不卡中文字幕 | 久久草av| 去看片| 国产精品一区欧美 | 国产黄在线看 | 午夜精品电影一区二区在线 | 激情黄色av | 久久久久国产精品免费网站 | 99视频在线精品国自产拍免费观看 | 在线观看精品一区 | 中文字幕在线日 | 欧美在线日韩在线 | 久久国产经典 | 国产视频不卡一区 | 夜色在线资源 | 青青射 | 91精品国产成人观看 | 久久免费视频播放 | 欧美一区二区三区四区夜夜大片 | 久久乱码卡一卡2卡三卡四 五月婷婷久 | 欧美精品资源 | 天天干天天天 | 深爱婷婷激情 | 欧美日韩亚洲国产一区 | 日本字幕网 | 日韩午夜高清 | 在线观看免费福利 | 激情五月婷婷综合 | 色在线国产 | 在线观看黄色免费视频 | 日本大片免费观看在线 | 欧美三级免费 | 51精品国自产在线 | 热精品| 人人爽人人干 | 欧美日韩国产在线 | 成人h视频在线 | 国产精品一区二区在线免费观看 | 久久综合之合合综合久久 | 天天干,夜夜爽 | 黄色一级大片在线观看 | 99久热在线精品视频观看 | 最近中文字幕完整视频高清1 | 国产成人777777 | 三级av免费观看 | 精品国产网址 | 日韩在线影视 | 国产精品99久久久久久人免费 | 四虎成人免费观看 | 久热久草 | 国产99久久 | 日韩av女优视频 | 五月天av在线 | 福利一区在线 | 国产精品福利午夜在线观看 | 亚洲综合视频在线观看 | 玖草影院 | 亚洲 欧美 综合 在线 精品 | 天天干干| 国产一性一爱一乱一交 | 在线成人观看 | 免费a视频在线 | 久久久久网站 | 欧美动漫一区二区三区 | 久久精品久久久精品美女 | www.夜夜爱 | 青青河边草免费观看完整版高清 | 日韩超碰 | 国产999精品久久久 免费a网站 | 国产精品久久久久一区二区 | 超碰在线观看av.com | 精品三级av | 国产网红在线 | 中文字幕在线观看视频一区二区三区 | 免费中文字幕 | 婷婷久久网 | 色综合天天色综合 | 欧美一级高清片 | 久久国产精品电影 | 色综合天天色 | 极品久久久| 丰满少妇在线观看 | 国产精品久久久久av | 黄www在线观看 | 久久国产片 | 亚洲理论电影网 | 美女视频a美女大全免费下载蜜臀 | 欧美精品久久天天躁 | 公与妇乱理三级xxx 在线观看视频在线观看 | 91专区在线观看 | 最近日本中文字幕a | 欧美日韩xxxxx| 日韩v在线91成人自拍 | 国产精品免费一区二区 | 久久综合九色欧美综合狠狠 | 久久久久久久久久久久久久av | 深爱综合网| 麻豆av电影 | 国产精品99久久99久久久二8 | 久久综合狠狠综合久久综合88 | 精品1区二区 | 免费高清在线观看电视网站 | 亚洲精品国产区 | 国产综合福利在线 | 97精品伊人| 日韩高清在线观看 | 国产精品一区二区电影 | 国模精品一区二区三区 | 精品欧美在线视频 | 亚洲精品在线看 | 中文字幕乱码一区二区 | 91视频久久久久久 | 国产高清免费在线播放 | 久久欧美在线电影 | 国产综合香蕉五月婷在线 | 天天射综合 | 在线av资源| 亚洲开心色| 国产午夜精品一区二区三区欧美 | 国内精品久久久久久久久久 | 一级黄色视屏 | 欧美大片aaa | 久99视频 | 久久免费99 | 91福利影院在线观看 | 成人av高清 | www最近高清中文国语在线观看 | 超碰在线个人 | 这里只有精彩视频 | 狠狠做六月爱婷婷综合aⅴ 日本高清免费中文字幕 | www.国产视频 | 中文乱码视频在线观看 | 91成人免费在线 | 中文字幕首页 | 五月天中文在线 | 国产丝袜一区二区三区 | 色综合久久综合网 | 最新av在线免费观看 | 91桃色在线免费观看 | 在线亚洲欧美日韩 | 成人黄在线 | 婷婷爱五月天 | 色婷婷激情 | av电影在线免费 | 国产美女搞久久 | 亚洲综合色丁香婷婷六月图片 | 亚洲无吗视频在线 | 久久久www免费电影网 | 午夜久久久久 | 在线看毛片网站 | 色婷婷综合视频在线观看 | 免费色黄 | 亚洲天堂精品视频在线观看 | 日韩免费高清在线 | 狠狠的日| 韩国视频一区二区三区 | 欧美性生活免费 | 久久亚洲区 | 五月激情片 | 91人人视频在线观看 | 国产专区视频 | 国产亚洲精品xxoo | 国产精品日韩久久久久 | 91高清不卡 | 日日日干 | 日日夜夜骑 | 美女久久视频 | 中午字幕在线观看 | 97av色 | 在线观看日韩av | 天天干.com | 成人av午夜 | 91色综合 | 胖bbbb搡bbbb擦bbbb| 国产精品久久久久久久av电影 | 成人黄色一级视频 | 久艹视频免费观看 | 亚洲最新av网址 | 欧美精品xx | 成人一区不卡 | 日批网站在线观看 | 久久久久久高潮国产精品视 | 成人免费在线网 | 综合激情伊人 | 韩日电影在线 | 激情综合网在线观看 | 97碰在线视频 | 黄色一级免费网站 | 久久国产三级 | 色五丁香 | 久久久久久久影院 | 午夜av在线播放 | 91精品一区二区在线观看 | 国产亚洲成av片在线观看 | 精品久久久久久久久亚洲 | 久草视频国产 | 在线色网站| 日韩欧美国产免费播放 | 亚洲精品小区久久久久久 | 色婷婷成人 | 六月丁香六月婷婷 | 国内久久久久久 | 五月婷婷开心中文字幕 | 奇米影视四色8888 | 欧美国产亚洲精品久久久8v | 久久久影片| 超碰人人做 | 国产美女被啪进深处喷白浆视频 | 97视频人人澡人人爽 | 色国产精品一区在线观看 | 一区二区三区在线观看 | 极品国产91在线网站 | 久久免费av电影 | 欧美精品久久久久久久 | 狠狠操夜夜操 | 国产在线中文字幕 | 国产福利在线不卡 | 国产日韩欧美视频在线观看 | 欧美韩日视频 | 激情综合网五月婷婷 | 欧美一区二区三区在线播放 | 国产不卡免费 | 在线一二三区 | 免费成人在线观看视频 | www.91成人 | 午夜手机看片 | 久久神马影院 | 亚洲国产一区二区精品专区 | 精品久久久久免费极品大片 | 在线看毛片网站 | 四季av综合网站 | 在线观看免费一级片 | 黄色av在 | 国产日韩精品在线观看 | 国产成人精品av在线 | 91看片在线播放 | 日韩在线小视频 | 婷婷色六月天 | 97超视频在线观看 | 日韩美女高潮 | av在线小说 | 久草在线资源免费 | 日韩中文字幕视频在线 | 插婷婷 | 亚洲国产美女久久久久 | 中文字幕一区二区三区四区视频 | 国内精品视频一区二区三区八戒 | 日韩精品一区二区三区中文字幕 | 8x成人免费视频 | 亚洲国产精品电影 | 久久精品国产99 | 国产99久久久欧美黑人 | 国产麻豆成人传媒免费观看 | 婷婷久久综合九色综合 | 欧美激情第28页 | 91精品国产自产在线观看永久 | 国产xvideos免费视频播放 | 国产一区二区久久 | 国产做aⅴ在线视频播放 | 日韩精品视频在线观看免费 | 免费看三级网站 | 在线观看免费成人 | 国产精品99久久久精品 | 天天插天天干天天操 | 色婷婷国产精品一区在线观看 | 天天操偷偷干 | 久久精品久久精品久久 | 激情网在线视频 | 国产一级二级在线播放 | 国产在线成人 | 国产成人在线免费观看 | 成人动漫视频在线 | 亚洲五月婷| 久久亚洲精品国产亚洲老地址 | 一区av在线播放 | 国产不卡一区二区视频 | 中文av字幕在线观看 | 一区二区不卡 | 亚洲天天做 | 免费观看完整版无人区 | 不卡精品视频 | 综合久久综合久久 | 国产999视频 | 18国产精品白浆在线观看免费 | 五月综合色 | 日韩女同一区二区三区在线观看 | 日韩成人看片 | 久久久久在线观看 | 九九热精 | 一级黄色网址 | 手机在线看a | 免费观看黄 | 美女视频黄色免费 | 国产精品11| 亚洲欧美精品一区二区 | 国产污视频在线观看 | 啪啪凸凸 | 夜色成人网 | 91人网站 | 免费av片在线| 亚洲国产剧情 | 四虎国产精品免费观看视频优播 | 99在线视频免费观看 | 色婷婷伊人 | 超碰国产在线观看 | 黄色视屏免费在线观看 | 欧美污污网站 | 午夜av日韩 | 日韩中文字幕免费视频 | 99久久久久久久久 | 欧美日韩在线观看一区二区 | 天天操天天射天天操 | 制服丝袜亚洲 | 久久精品国产成人精品 | 精品专区一区二区 | 国产va在线| 国产一级做a爱片久久毛片a | 国产91探花| 免费观看久久 | 国产免费区 | 中文字幕免费成人 | 狠狠操夜夜操 | 精品久久久久久亚洲综合网站 | 国产精品一区二区三区电影 | 中文字幕免费在线 | 一本一本久久a久久精品综合 | 国产三级香港三韩国三级 | 日韩精品一区二区三区高清免费 | 亚洲黄色在线观看 | 国际精品久久久 | 色999五月色 | 成年人看片网站 | 91亚州 | 国产精品免费久久久 | 又黄又爽免费视频 | 99精品国产一区二区三区不卡 | 婷婷色网视频在线播放 | 精品久久久久国产免费第一页 | 在线高清一区 | 日本精品一区二区三区在线观看 | 91九色蝌蚪在线 | www.国产毛片 | 国产第页 | 国产黄视频在线观看 | 成人黄色资源 | 四虎影视8848aamm | 久久人人爽视频 | 色婷婷丁香 | 免费看污片 | 久久国语露脸国产精品电影 | 成年人app网址 | 久久精品一区二区三区国产主播 | 久久免费成人精品视频 | 综合中文字幕 | 99视屏| 国产精品久久一区二区无卡 | 色综合久久综合中文综合网 | 欧美亚洲国产精品久久高清浪潮 | 99久久9 | 久久色在线观看 | 国产精品大片在线观看 | 91精品国产欧美一区二区成人 | 国产精品免费视频一区二区 | 夜夜躁日日躁狠狠躁 | 成人午夜影视 | 中文字幕一区二 | 99热都是精品 | 国产黄色美女 | 国际精品久久 | 日韩理论电影在线 | 国产亚洲精品久久久久动 | 国产一区二区在线影院 | 在线看v片 | 国产一二三四在线观看视频 | 国产精品激情在线观看 | 99精品欧美一区二区三区黑人哦 | 国产成人福利在线 | 久久婷婷久久 | 国产永久免费高清在线观看视频 | 精品亚洲va在线va天堂资源站 | 国产日韩欧美在线一区 | 久久久精品国产一区二区三区 | 中文字幕在线观看网 | 天天干天天草 | 精品999在线 | 91大神电影 | 亚洲综合在线发布 | 九九久久国产 | 射综合网 | 欧美久久久一区二区三区 | 亚洲国产黄色片 | 国产精品美女999 | www91在线| 中文字幕一二三区 | 色99在线 | 在线播放你懂 | 国产亚洲精品女人久久久久久 | 天天操天天射天天爱 | 亚洲一区二区高潮无套美女 | 97久久精品午夜一区二区 | 日韩在线免费观看视频 | 国产一级二级在线观看 | 久久久国产精品人人片99精片欧美一 | 成人免费一级片 | 曰韩在线| 国产精品99免费看 | 四虎永久视频 | 日韩欧美高清不卡 | 日韩av片免费在线观看 | 日韩中午字幕 | 日本久久久久久 | 亚洲第一av在线播放 | 九色91福利 | 国产精品原创视频 | 91免费日韩| 一区二区三区电影在线播 | 精品久久国产精品 | 国产一级黄 | 日韩一区二区三 | 99在线视频网站 | www国产亚洲精品 | 五月导航 | 中文字幕乱在线伦视频中文字幕乱码在线 | 国产精品成人免费精品自在线观看 | 免费成人看片 | 成人av在线网 | 国产美女永久免费 | 在线播放亚洲激情 | 精品久久视频 | 亚洲激色 | 国产一级免费在线 | 五月婷婷伊人网 | 久久久综合九色合综国产精品 | 日韩一区二区三区高清免费看看 | 99色精品视频 | 九九视频免费在线观看 | 人人爽人人爽人人爽学生一级 | 国产福利a| 国产成人在线免费观看 | 成人av电影免费观看 | 91桃色在线播放 | 亚洲三级av | 国产精品黄色影片导航在线观看 | 天天干中文字幕 | 久久资源总站 | 久久黄色免费观看 | 人人干97 | 日韩高清免费在线观看 | 国产又粗又硬又长又爽的视频 | av在线免费播放网站 | 国产精品综合av一区二区国产馆 | 久久久久久国产一区二区三区 | 色七七亚洲影院 | 人人躁 | 在线高清一区 | 国产精品自产拍在线观看蜜 | 国产一二区视频 | 欧美色插| 亚洲精品网站 | 在线观看www91 | 成人xxxx | 黄色网大全| 久久久91精品国产一区二区三区 | 亚洲精品高清一区二区三区四区 | 久久在线影院 | 国产精品福利小视频 | 18性欧美xxxⅹ性满足 | 国产一区二区三区 在线 | 亚洲热视频 | 在线免费av网 | 亚洲女人天堂成人av在线 | 在线观看中文字幕一区二区 | 免费看污在线观看 | www.夜夜操.com | 超碰在线成人 | 欧美日韩在线观看视频 | 欧美在一区| 久久久精品99 | 精品一区二区久久久久久久网站 | 永久免费精品视频 | 久久综合偷偷噜噜噜色 | 91精品一区二区三区久久久久久 | 男女激情片在线观看 | 午夜91在线 | 99精品欧美一区二区三区黑人哦 | 国产伦精品一区二区三区在线 | 欧美激情另类文学 | 久久99影院| 国产在线视频导航 | 国产免费一区二区三区最新 | 色在线免费视频 | 国产又粗又猛又色又黄网站 | av福利在线导航 | 亚洲 av网站 | 亚洲欧美综合精品久久成人 | 久久精品视频一 | 日韩精品在线一区 | 日韩中文字幕国产精品 |