久久99久久人婷婷精品综合_超碰aⅴ人人做人人爽欧美_亚洲电影第三页_日韩欧美一中文字暮专区_波多野结衣的一区二区三区_婷婷在线播放_人人视频精品_国产精品日韩精品欧美精品_亚洲免费黄色_欧美性猛交xxxxxxxx

Angular.JS中指令的參數有哪些

Angular.JS中指令的參數有哪些?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

成都創新互聯公司專注于企業成都營銷網站建設、網站重做改版、遂平網站定制設計、自適應品牌網站建設、HTML5商城網站建設、集團公司官網建設、外貿營銷網站建設、高端網站制作、響應式網頁設計等建站業務,價格優惠性價比高,為遂平等各大城市提供網站開發制作服務。

指令的參數

angular.module('app', [])
.directive('myDirective', function() {
 return {
 restrict: String, 
 priority: Number,
 terminal: Boolean,
 template: String or Template Function:
 function(tElement, tAttrs) {...},
 templateUrl: String,
 replace: Boolean or String,
 scope: Boolean or Object,
 transclude: Boolean,
 controller: String or
 function(scope, element, attrs, transclude, otherInjectables) { ... },
 controllerAs: String,
 require: String,
 link: function(scope, iElement, iAttrs) { ... },
 compile: // 返回一個對象或連接函數,如下所示:
 function(tElement, tAttrs, transclude) {
 return {
 pre: function(scope, iElement, iAttrs, controller) { ... },
 post: function(scope, iElement, iAttrs, controller) { ... }
 }
 return function postLink(...) { ... }
 }
 };
 });

把它們分成三類:

  1. 描述指令或DOM本身特性的內部參數

  2. 連接指令外界、與其他指令或控制器溝通的對外參數

  3. 描述指令本身行為的行為參數

內部參數

  • restrict:String,E(元素)<my-directive></my-directive> A(屬性,默認值)<div my-directive="expression"></div> C(類名)<div class="my-directive:expression;"></div> M(注釋)<--directive:my-directive expression-->

  • priority: Number,指令執行優先級

  • template: String,指令鏈接DOM模板,例如“<h2>{{head}}</h2>”

  • templateUrl:String,DOM模板路徑

  • replace: Boolean,指令鏈接模板是否替換原有元素,

對外參數——scope

scope參數非常重要,本應該是放到最后說明的,但是scope卻是理解其他參數的關鍵,所以務必先跟大家說清楚。

scope參數的作用是,隔離指令與所在控制器間的作用域、隔離指令與指令間的作用域。

scope參數是可選的,默認值為false,可選true、對象{};

  • false:共享父域

  • true:繼承父域,且新建獨立作用域

  • 對象{}:不繼承父域,且新建獨立作用域

false、true、{}三者對比

來看個例子

<body>
 <div ng-controller='parentCtrl'>
 <h4>指令scope參數——false、true、{}對比測試</h4>
 parent:
 <div>
 <span> {{parentName}}</span>
 <input type="text" ng-model="parentName" />
 </div>
 <br />
 <child-a></child-a>
 <br />
 <child-b></child-b>
 <br />
 <child-c parent-name="parentName"></child-c>
 </div>
 <!--t1指令模板-->
 <script type="text/html" id="t1">
 <div>
 <span>{{parentName}}</span>
 <input type="text" ng-model="parentName" />
 </div>
 </script>
 <script>
 var app = angular.module("app", []);

 app.controller('parentCtrl', function ($scope) {
 $scope.parentName = "parent";
 })

 //false:共享作用域
 app.directive('childA', function () {
 return {
 restrict: 'E',
 scope: false,
 template: function (elem, attr) {
  return "false:" + document.getElementById('t1').innerHTML;
 }
 };
 });

 //true:繼承父域,并建立獨立作用域
 app.directive('childB', function () {
 return {
 restrict: 'E',
 scope: true,
 template: function (elem, attr) {
  return "true:" + document.getElementById('t1').innerHTML;
 },
 controller: function ($scope) {
  $scope.parentName = "parent";

  //已聲明的情況下,$scope.$watch監聽的是自己的parentName
  $scope.$watch('parentName', function (n, o) {
  console.log("child watch" + n);
  });

  //$scope.$parent.$watch監聽的是父域的parentName
  $scope.$parent.$watch('parentName', function (n, o) {
  console.log("parent watch" + n);
  });
 }
 };
 });

 //{}:不繼承父域,建立獨立作用域
 app.directive('childC', function () {
 return {
 restrict: 'E',
 scope: {},
 template: function (elem, attr) {
  return "{}:" + document.getElementById('t1').innerHTML;
 },
 controller: function ($scope) {
  console.log($scope);
 }
 };
 });

 </script>
</body>

false參數

本質:子域與父域共享作用域。

特點:父域修改parentName的同時,指令綁定的parentName的元素會被刷新。

Angular.JS中指令的參數有哪些 

反之,指令內部parentName被修改時,父域的parentName同樣會被刷新。

Angular.JS中指令的參數有哪些 

true參數

本質:子域繼承父域,并建立獨立作用域。

特點:

1、在指令已聲明parentName的情況下,父域parentName變更,指令中parentName不會發生變化。
指令在true參數下,建立了的scope,獨立并隔離與父控制器的scope。

controller: function ($scope) {
 $scope.parentName = "parent";
}

Angular.JS中指令的參數有哪些

反之,指令中parentName變更,父域也不會發生變化。

Angular.JS中指令的參數有哪些 

2、在指令未聲明parentName的情況下,父域的parentName變更,指令中parentName也會刷新
這種情況很多時候會被忽略,指令的scope沒有聲明對象時,其元素綁定的仍然是父域的對象。但,一旦指令中Input變更了,對應的獨立scope也會自動聲明該綁定對象,這就回到了第1種情況。

controller: function ($scope) {
 //$scope.parentName = "parent";
}

Angular.JS中指令的參數有哪些

然而,指令中parentName變更,父域是不會變化的;

Angular.JS中指令的參數有哪些 

3、在指令已聲明parentName的情況下 ,在指令中監聽父域parentName 的變化無效。但監聽子域parentName的變化有效
獨立子域scope,只能監聽自己的,不能監聽父域的。但通過 $scope.$parent可以監聽父域。

controller: function ($scope) {
 $scope.parentName = "parent" ;

 //已聲明的情況下,$scope.$watch監聽的是自己的parentName
 $scope.$watch( 'parentName' , function (n, o) {
 console.log("child watch" + n);
 });

 //$scope.$parent.$watch監聽的是父域的parentName
 $scope.$parent.$watch( 'parentName' , function (n, o) {
 console.log("parent watch" + n);
 });
}

Angular.JS中指令的參數有哪些

4、在指令未聲明parentName的情況下 ,在指令中監聽父域parentName的變化有效。

這里就不解釋了,參考第2點,大家可以動手試一下。

controller: function ($scope) {
 //$scope.parentName = "parent";

 //未聲明的情況下,$scope.$watch監聽的是父域的parentName
 $scope.$watch('parentName' , function (n, o) {
 console.log("child watch" + n);
 });
}

對象{}參數

本質:子域不繼承父域,并建立獨立作用域。

特點:

1、當scope對象為空對象時,無論是父域parentName,還是指令子域parentName發生變更,都不會影響到對方。
原理很清楚,就是指令建立的獨立作用域,與父域是完全隔離的。

scope: {}

Angular.JS中指令的參數有哪些 

2、當scope對象為非空對象時,指令會將該對象處理成子域scope的擴展屬性。而父域與子域之間傳遞數據的任務,就是可以通過這塊擴展屬性完成。

<div ng-controller='parentCtrl'>
 parent:
 <p><span>{{name}}</span><input type="text" ng-model="name" /></p>
 <p><span>{{sexy}}</span><input type="text" ng-model="sexy" /></p>
 <p><span>{{age}}</span><input type="text" ng-model="age" /></p>
 <br />

 <!--特別注意:@與=對應的attr,@是單向綁定父域的機制,記得加上{{}};&對應的attrName必須以on-開頭-->
 <child-c my-name="name" my-sexy-attr="sexy" my-age="{{age}}" on-say="say('i m ' + name)"></child-c>
</div>

<!--t1指令模板-->
<script type="text/html" id="t1">
 <div>
 <span>{{myName}}</span>
 <input type="text" ng-model="myName" />
 </div>
 <div>
 <span>{{mySexy}}</span>
 <input type="text" ng-model="mySexy" />
 </div>
 <div>
 <span>{{myAge}}</span>
 <input type="text" ng-model="myAge" />
 </div>
</script>

<script>
 var app = angular.module("app", []);

 app.controller('parentCtrl', function ($scope) {
 $scope.name = "mark";
 $scope.sexy = "male";
 $scope.age = "30";
 $scope.say = function (sth) {
  alert(sth);
 };
 })

 app.directive('childC', function () {
 return {
  restrict: 'E',
  scope: {
  myName: '=',
  mySexy: '=mySexyAttr',
  myAge: '@',
  onSay: '&'
  },
  template: function (elem, attr) {
  return "{}:" + document.getElementById('t1').innerHTML;
  },
  controller: function ($scope) {
  console.log($scope.myName);
  console.log($scope.mySexy);
  console.log($scope.myAge);
  $scope.onSay();
  }
 };
 });

</script>

@(or @Attr)綁定策略——本地作用域屬性,使用@符號將本地作用域同DOM屬性的值進行綁定。指令內部作用域可以使用外部作用域的變量。(單向引用父域對象)

<child-c my-age="{{age}}"></child-c>

ps:@ 是單向綁定本地作用域,記得加上{{}}

scope: {  
 myAge: '@',
}

Angular.JS中指令的參數有哪些

= (or =Attr)綁定策略——雙向綁定:通過=可以將本地作用域上的屬性同父級作用域上的屬性進行雙向的數據綁定。就像普通的數據綁定一樣,本地屬性會反映出父數據模型中所發生的改變。(雙向引用父域對象)

<child-c onSay="name"></child-c>

ps:=策略不需要加上{{}}進行綁定

scope: {  
 myName: '=',
}

Angular.JS中指令的參數有哪些

& (or &Attr)綁定策略——通過&符號可以對父級作用域進行綁定,以便在其中運行函數。(調用父域函數)

<child-c on-say="say('i m ' + name)"></child-c>

ps:&對應的attrName必須以on-開頭

scope: {  
 onSay: '&',
}

父域綁定調用函數及傳參

app.controller('parentCtrl', function ($scope) {
 $scope.say = function (sth) {
  alert(sth);
 };
})

Angular.JS中指令的參數有哪些

ps特別注意:@與=對應的attr,;

<child-c my-name="name" my-sexy-attr="sexy" my-age="{{age}}" on-say="say('i m ' + name)"></child-c>

總結下來,scope擴展對象,既能夠解耦父域與子域共域的問題,也能夠實現指令與外界通訊的問題,是Angular開發指令化模塊化的重要基礎。在往后的章節,我會向大家介紹指令化開發的更多實例。

對外參數——require

scope是指令與外界作用域通訊的橋梁,而require是指令與指令之間通訊的橋梁。這個參數最大的作用在于,當要開發單指令無法完成,需要一些組合型指令的控件或功能,例如日期控件,通過require參數,指令可以獲得外部其他指令的控制器,從而達到交換數據、事件分發的目的。

使用方法:require: String or Array——String值為引入指令名稱,并且有兩個尋找指令策略符號‘?'與‘^';Array數組則為多個外部指令名稱。

在link函數第4個參數ctrl中獲取注入外部指令的控制器,如果require為String,ctrl為對象,如果require是數組,ctrl為數組。

require: '^teacher1',
link: function ($scope, $element, $attrs, ctrl) {
 //ctrl指向teacher1指令的控制器
}

?策略——尋找指令名稱,如果沒有找到,link函數第4個參數為null;如果沒有?,則報錯。

Angular.JS中指令的參數有哪些 

^ 策略——在自身指令尋找指令名稱的同時,向上父元素尋找;如果沒有^,則僅在自身尋找。
如下例子,指令studentA向上可以找到指令teacher及自身,但是不能找到相鄰兄弟的student-b。

<div teacher>
 <student-a></student-a>
 <student-b></student-b>
</div>

完整例子

<body>
 <div teacher>
 {{name}}
 <student-a></student-a>
 <student-b></student-b>
 </div>
 <script>
 var app = angular.module("app", []);

 //studentA——require指向父級指令teacher
 app.directive('studentA', function () {
  return {
  require: '?^teacher',
  scope: {},
  template: '<div>A`s teacher name: <span>{{teacherName}}</span></div>',
  link: function ($scope, $element, $attrs, ctrl) {
   //獲取teacher指令控制器,并調用其方法sayName()
   $scope.teacherName = ctrl.sayName();
  }
  };
 });

 //studentB——require指向父級指令teacher,及指令studentA
 //但是,由于不能獲得兄弟,也沒有采取?策略,導致報錯
 app.directive('studentB', function () {
  return {
  require: ['?^teacher', 'studentA'],
  scope: {},
  template: '<div>B`s teacher name: <span>{{teacherName}}</span></div>',
  link: function ($scope, $element, $attrs, ctrl) {
   $scope.teacherName = ctrl.sayName();
  }
  };
 });

 app.directive('teacher', function () {
  return {
  restrict: 'A',
  controller: function ($scope) {
   $scope.name = "Miss wang";

   //擴展控制器的方法sayName,目的是讓外部內獲取控制器內部數據
   this.sayName = function () {
   return $scope.name;
   };
  }
  };
 });
 </script>
</body>

Angular.JS中指令的參數有哪些

既然require可以獲取外部指令,那Angular原生指令應該也是能夠獲取。其中最廣泛應用的就是require: 'ngModel',關于ngModel在自定義指令上的應用,留待下回實例中再跟大家深入討論。

行為參數——link與controller

為什么要把link與controller兩個參數放到一起?

因為很多童鞋會把它們錯誤地混淆使用,包括我自己。

link與controller都是描述指令行為的參數,但它們是要描述的行為是完全不同的類型。

controller語法 controller:String or Function

controller本身的意義就是賦予指令控制器,而控制器就是定義其內部作用域的行為的。

所以controller要描述的是:指令的作用域的行為。

//指向匿名控制器
controller: function ($scope) {
},
//指向控制器mainCtrl
controller: "mainCtrl"

link語法 link:String Or Function

link名稱是鏈接函數,啥意思,好像挺難理解。所以在解釋鏈接函數之前,先要說一下Angular的初始化對于指令究竟做了什么。

Angular在剛從HTTP Response接收靜態素材之初,會首先去分析母頁HTML中有哪些原生指令或自定義指令,然后再去加載指令的template模板HTML,而template模板中又去加載自己的指令模板,如此類推,直到Angular找到了所有的指令及模板,形成模板樹,并返回模板函數,提供給下一階段進行數據綁定。

<body>
 <stu1 ></ stu1>
 <script >
  var app = angular.module("app" , []);

  app.directive( 'stu1' , function () {
   return {
    restrict: 'E' ,
    template: "<p>1</p><stu2></stu2>" ,
    link: function (scope) {
     console.log( 'stu1 running' );
    }
   };
  });

  app.directive( 'stu2' , function () {
   return {
    restrict: 'E' ,
    template: "<p>2</p><stu3></stu3>" ,
    link: function (scope) {
     console.log( 'stu2 running' );
    }
   };
  });

  app.directive( 'stu3' , function () {
   return {
    restrict: 'E' ,
    template: "<p>3</p>" ,
    link: function (scope) {
     console.log( 'stu3 running' );
    }
   };
  });

 </script >
</ body>

 
console output

stu3 running
stu2 running
stu1 running

Angular.JS中指令的參數有哪些

注意以上例子,在第一個斷點stu3 running的時候,1 2 3 三個模板都渲染完成了。然后從最根部的stu3的link函數開始,依次執行stu 3 stu2 stu1的link函數。

簡單來說就是:

  1. 加載模板,形成DOM模板樹

  2. @@@@

  3. 數據綁定

@@@@是啥?沒錯,就是link鏈接函數,它會在形成模板樹之后,在數據綁定之前,從最底部指令開始,逐個指令執行它們的link函數。

在這個時間節點的link函數,操作DOM的性能開銷是最低,非常適合在這個時機執行DOM的操作,例如鼠標操作或觸控事件分發綁定、樣式Class設置、增刪改元素等等。

所以link就是描述指令元素操作行為。

link: function (scope, element, attr, ctrl) {

 element.bind("click", function () {
  console.log("綁定點擊事件");
 });

 element.append("<p>增加段落塊</p>");

 //設置樣式
 element.css("background-color", "yellow");

 //不推薦,在link中賦予scope行為
 scope.hello = function () {
  console.log("hello");
 };
}

同理,在link中定義$scope行為是不推薦的。

這樣想想,對于controller與link,就明白了。但還有一個問題,它們倆的執行順序是?答案是先controller,后link。

放到全局順序就是:

  1. 執行controller,設置各個作用域scope

  2. 加載模板,形成DOM模板樹

  3. 執行link,設置DOM各個行為

  4. 數據綁定,最后scope綁上DOM

例子

 <div student>
  {{name }}
 </div>
 <script>
  var app = angular.module("app", []);

  app.directive('student', function () {
   return {
    restrict: 'A',
    controller: function ($scope) {
     $scope.name = "tgor";

     console.log('controller running');
    },
    link: function (scope, el) {
     el.append("<p>hello</p>");

     console.log('link running');
    }
   };
  });

 </script>

Angular.JS中指令的參數有哪些

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注創新互聯行業資訊頻道,感謝您對創新互聯的支持。

網站標題:Angular.JS中指令的參數有哪些
當前URL:http://www.js-pz168.com/article28/pojdcp.html

成都網站建設公司_創新互聯,為您提供營銷型網站建設面包屑導航微信小程序網站導航動態網站網站內鏈

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

成都seo排名網站優化
久久99久久人婷婷精品综合_超碰aⅴ人人做人人爽欧美_亚洲电影第三页_日韩欧美一中文字暮专区_波多野结衣的一区二区三区_婷婷在线播放_人人视频精品_国产精品日韩精品欧美精品_亚洲免费黄色_欧美性猛交xxxxxxxx
免费看欧美女人艹b| 国产视频精品网| 欧美连裤袜在线视频| 在线免费不卡视频| 久久精品欧美日韩| 三级精品在线观看| 99re这里只有精品6| 午夜精品福利一区二区| 欧美成人一区二区| 亚洲自拍偷拍av| 国产91在线观看丝袜| 久久久久久久久久久久久9999| 欧美午夜不卡在线观看免费| 国产女同互慰高潮91漫画| 首页综合国产亚洲丝袜| 91麻豆swag| 色婷婷综合久久久中文字幕| 久久久久久久久久电影| 日韩av一区二| 国产另类第一区| 欧美另类videos死尸| 亚洲欧洲www| 国产夫妻精品视频| 日本高清不卡三区| 精品国产亚洲在线| 日本vs亚洲vs韩国一区三区二区 | 国产免费一区| 欧美日韩国产bt| 亚洲视频在线一区二区| 国产成人aaa| 亚洲欧美在线网| 欧美国产一区二区在线观看| 麻豆成人综合网| 久久综合给合久久狠狠色| 日韩一区二区免费在线观看| 亚洲大型综合色站| 99久久伊人精品影院| 欧美三级视频在线| 一区二区三区欧美| 91青青草免费观看| 欧美天堂一区二区三区| 一区二区三区在线视频观看58| 成人精品免费网站| 欧美亚洲综合在线| 亚洲男人的天堂av| 91网站在线观看视频| 欧美日韩精品二区第二页| 亚洲桃色在线一区| 91在线精品一区二区三区| 欧美少妇bbb| 亚洲图片有声小说| 国产亚洲情侣一区二区无| 91麻豆精品91久久久久同性| 爽好多水快深点欧美视频| 精品日产一区2区三区黄免费| 日韩欧美一区二区三区在线| 人人超碰91尤物精品国产| 欧美精品国产精品久久久| 国产亚洲精品超碰| 国产福利一区二区三区在线视频| 在线国产精品网| 亚洲精品视频观看| 成人情视频高清免费观看电影| 91精品欧美一区二区三区综合在| 日韩不卡手机在线v区| 欧美一区二区在线| 国产精品成人免费精品自在线观看| 成人午夜激情视频| 欧美精品丝袜中出| 喷白浆一区二区| 亚洲国产欧洲综合997久久| 蜜桃狠狠色伊人亚洲综合网站| 久久精品夜夜夜夜久久| 高清国产一区二区| 欧美日韩一级视频| 日韩va欧美va亚洲va久久| 天天好比中文综合网| 亚洲精选一二三| 精品蜜桃一区二区三区| 国产免费观看久久| 99精品热视频| 欧美一级二级三级蜜桃| 久久 天天综合| 欧美在线免费观看亚洲| 日本午夜精品一区二区三区电影| 日韩在线第一区| 一区二区三区视频在线观看| 久久av一区二区三区漫画| 国产精品久久久久久亚洲伦| 99中文字幕| 国产欧美一区二区精品性| 97se亚洲国产综合自在线不卡 | 亚洲综合av一区| 亚洲影视在线播放| 欧美在线视频二区| 亚洲精品国产成人久久av盗摄| 激情一区二区三区| 亚洲欧洲无码一区二区三区| 国产精品免费在线| 国产精品久久久久久久久免费樱桃| 成人高清在线观看| 国产精品五月天| 韩国一区二区三区美女美女秀| 国产精品久久久久久久久免费桃花| 国产精华一区二区三区| 国产精品私人影院| 久久99精品久久久久子伦| 亚洲欧美aⅴ...| 日韩欧美亚洲在线| 午夜免费久久看| 中文字幕一区二区中文字幕 | 天天爽天天狠久久久| 午夜精品影院在线观看| 色综合天天天天做夜夜夜夜做| 日本亚洲三级在线| 欧美色中文字幕| 国产一区二区不卡| 日韩欧美在线观看一区二区三区| 成人毛片视频在线观看| 久久九九久久九九| 国产精品区免费视频| 亚洲精品久久久蜜桃| 性刺激综合网| 美腿丝袜亚洲色图| 欧美一区二区三区在线观看| 成人av动漫网站| 日本一区二区视频在线| 乱色588欧美| 婷婷六月综合网| 欧美日韩国产精品成人| 丁香激情综合五月| 国产欧美日韩精品一区| 另类小说综合网| 午夜精品久久久久久久99樱桃| 欧美午夜电影一区| 成人精品免费网站| 国产精品你懂的在线欣赏| 欧美一区二区三区四区在线观看地址 | 国产美女精品在线观看| 亚洲一区免费在线观看| 欧美综合一区二区| 国产91高潮流白浆在线麻豆| 国产亚洲va综合人人澡精品| 久久国产精品-国产精品| 天天操天天色综合| 3d动漫精品啪啪1区2区免费| 91久色国产| 一区二区成人在线| 欧美亚洲高清一区| av不卡一区二区三区| 国产精品不卡在线| 在线免费观看成人网| 国产成人无遮挡在线视频| 国产欧美精品区一区二区三区| 日韩欧美亚洲在线| 国产一区91精品张津瑜| 国产午夜久久久久| 亚洲第一综合| 国产高清精品在线| 中文字幕在线一区免费| 一区精品视频| 成人精品视频网站| 亚洲另类色综合网站| 欧美影院一区二区| 91同城在线观看| 亚洲线精品一区二区三区| 69堂精品视频| 国产自产在线视频一区| 免费在线观看精品| 久久久久久久久一| 夜夜春亚洲嫩草影视日日摸夜夜添夜| 国产乱子轮精品视频| 国产精品九色蝌蚪自拍| 在线观看不卡一区| 91日韩久久| 日韩av二区在线播放| 久久先锋影音av| 一区二区91美女张开腿让人桶| 国产91精品久久久久久久网曝门| 中文字幕一区二区三区在线观看| 在线观看成人小视频| 国产高清自拍一区| 麻豆freexxxx性91精品| 国产欧美视频一区二区三区| 中文字幕免费在线不卡| 91蜜桃网址入口| 日韩精品一二三四| 国产无人区一区二区三区| 这里只有精品66| 94色蜜桃网一区二区三区| 五月激情六月综合| 久久免费国产精品| 一区精品在线| 国产99在线免费| 九色综合狠狠综合久久| 亚洲视频在线一区观看| 91精品国产高清一区二区三区 | 国产在线视频精品一区| 亚洲美女视频一区| 欧美xxx久久|