Angular-material-virtualrepeat

提供:Dev Guides
移動先:案内検索

角材-バーチャルリピート

*md-virtual-repeat-container* は、md-virtual-repeatコンポーネントのスクロールコンテナーです。

属性

次の表に、 md-virtual-repeat-container のさまざまな属性のパラメーターと説明を示します。

Sr.No Parameter & Description
1

md-top-index

スクロールコンテナーの上部にあるアイテムのインデックスを$ scopeにバインドします。 スクロール位置の読み取りと設定の両方が可能です。

2

md-orient-horizontal

コンテナを水平方向にスクロールするかどうかを決定します(デフォルトでは方向と垂直方向にスクロールします)。

3

md-auto-shrink

存在する場合、コンテナはアイテムの数が元のサイズよりも小さい場合、アイテムの数に合わせて縮小します。

4

md-auto-shrink-min

md-auto-shrinkが縮小するアイテムの最小数(デフォルト:0)。

md-virtual-repeat

仮想リピートは、ng-repeatの代わりに使用され、ユーザーがスクロールしたときにコンテナを埋めて再利用するのに十分なhtml要素のみをレンダリングします。

属性

次の表に、 md-virtual-repeat のさまざまな属性のパラメーターと説明を示します。

Sr.No Parameter & Description
1

md-item-size

繰り返される要素の高さまたは幅(各要素で同一でなければなりません)。 これはオプションです。 これは、欠落している場合はdomからサイズを読み取ろうとしますが、繰り返されるすべてのノードの高さまたは幅が同じであると想定しています。

2

md-extra-name

繰り返しスコープで現在の反復アイテムを割り当てることができる追加の名前を評価します(md-autocompleteで使用するために必要)。

3

md-on-demand

存在する場合、 md-virtual-repeat 引数を、配列ではなく行をフェッチできるオブジェクトとして扱います。このオブジェクトは、2つのメソッドを持つ次のインターフェースを実装する必要があります-

  • getItemAtIndex -function(index)[object]-そのインデックスにあるアイテム、またはまだロードされていない場合はnull(その場合はアイテムのダウンロードを開始する必要があります)。
  • getLength -function()[number]-リピーターコンテナーのサイズを調整するデータの長さ。 理想的には、カウントがわかっている場合、このメソッドはそれを返す必要があります。 それ以外の場合は、現在ロードされているアイテムよりも大きい数値を返し、無限スクロール動作を生成します。

次の例は、仮想リピートの使用を示しています。

*_am_virtualrepeat_*
<html lang = "en">
   <head>
      <link rel = "stylesheet"
         href = "https://ajax.googleapis.com/ajax/libs/angular_material/1.0.0/angular-material.min.css">
      <script src = "https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
      <script src = "https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular-animate.min.js"></script>
      <script src = "https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular-aria.min.js"></script>
      <script src = "https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular-messages.min.js"></script>
      <script src = "https://ajax.googleapis.com/ajax/libs/angular_material/1.0.0/angular-material.min.js"></script>
      <link rel = "stylesheet" href = "https://fonts.googleapis.com/icon?family=Material+Icons">

      <style>
         .vrepeatContainer #horizontal-container {
            height: 100px;
            width: 830px;
         }

         .vrepeatContainer #vertical-container {
            height: 292px;
            width: 400px;
         }

         .vrepeatContainer .repeated-item-horizontal {
            border-right: 1px solid #ddd;
            box-sizing: border-box;
            display: inline-block;
            height: 84px;
            padding-top: 35px;
            text-align: center;
            width: 50px;
         }

         .vrepeatContainer .repeated-item-vertical {
            border-bottom: 1px solid #ddd;
            box-sizing: border-box;
            height: 40px;
            padding-top: 10px;
         }

         .vrepeatContainer md-content {
            margin: 16px;
         }

         .vrepeatContainer md-virtual-repeat-container {
            border: solid 1px grey;
         }
      </style>

      <script language = "javascript">
         angular
            .module('firstApplication', ['ngMaterial'])
            .controller('vrepeatController', vrepeatController);

         function vrepeatController ($scope) {
            this.items = [];
            for (var i = 0; i < 1000; i++) {
               this.items.push(i);
            }
         }
      </script>
   </head>

   <body ng-app = "firstApplication">
      <div class = "vrepeatContainer" ng-controller = "vrepeatController as ctrl"
         ng-cloak>
         <md-content layout = "column">
            <h2>Horizontal Repeat</h2>
            <md-virtual-repeat-container id = "horizontal-container" md-orient-horizontal>
               <div md-virtual-repeat = "item in ctrl.items"
                  class = "repeated-item-horizontal" flex>
                  {{item}}
               </div>
            </md-virtual-repeat-container>

            <h2>Vertical Repeat</h2>
            <md-virtual-repeat-container id = "vertical-container">
               <div md-virtual-repeat = "item in ctrl.items"
                  class = "repeated-item-vertical" flex>
                  {{item}}
               </div>
            </md-virtual-repeat-container>

         </md-content>
      </div>
   </body>
</html>

結果

結果を確認します。