Angular-material-contactchips

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

角材-コンタクトチップ

Angular Directiveである md-contact-chips は、md-chips上に構築された入力コントロールで、 md-autocomplete 要素を使用します。 コンタクトチップコンポーネントは、可能なコンタクトのリストを返すクエリ式を受け入れます。 ユーザーはこれらのいずれかを選択して、使用可能なチップのリストに追加できます。

属性

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

Sr.No Parameter & Description
1
  • ng-model*

アイテムのリストをバインドするモデル。

2
  • md-contacts*

検索テストに一致する連絡先を返すことが期待される式、$ query。

3
  • md-contact-name*

連絡先の名前を表す連絡先オブジェクトのフィールド名。

4
  • md-contact-email*

連絡先の電子メールアドレスを表す連絡先オブジェクトのフィールド名。

5
  • md-contact-image*

連絡先の画像を表す連絡先オブジェクトのフィールド名。

6

placeholder

入力に転送されるプレースホルダーテキスト。

7

secondary-placeholder

入力に転送されるプレースホルダーテキスト。リストに少なくとも1つのアイテムがある場合に表示されます。

8

filter-selected

オートコンプリートに表示される候補のリストから選択した連絡先をフィルターするかどうか。

次の例は、md-contact-chipsディレクティブの使用方法と、角のある接触チップの使用方法を示しています。

*_am_contact_chips_*
<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>

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

         function contactsChipController ($scope) {
            var self = this;
            self.querySearch = querySearch;
            self.allContacts = loadContacts();
            self.contacts = [self.allContacts[0]];
            self.filterSelected = true;

            function querySearch (query) {
               var results = query ?
               self.allContacts.filter(createFilterFor(query)) : [];
               return results;
            }

            function createFilterFor(query) {
               var lowercaseQuery = angular.lowercase(query);
               return function filterFn(contact) {
                  return (contact._lowername.indexOf(lowercaseQuery) != -1);;
               };
            }

            function loadContacts() {
               var contacts = [
                  'Roberto Karlos',
                  'Bob Crestor',
                  'Nigel Rick',
                  'Narayana Garner',
                  'Anita Gros',
                  'Megan Smith',
                  'Tsvetko Metzger',
                  'Hector Simek',
                  'James Roody'
               ];

               return contacts.map(function (c, index) {
                  var cParts = c.split(' ');
                  var contact = {
                     name: c,
                     email: cParts[0][0].toLowerCase() + '.' + cParts[1].toLowerCase()
                        + '@example.com',
                     image: 'http://lorempixel.com/50/50/people?' + index
                  };
                  contact._lowername = contact.name.toLowerCase();
                  return contact;
               });
            }
         }
      </script>
   </head>

   <body ng-app = "firstApplication">
      <div ng-controller = "contactsChipController as ctrl" layout = "column"
         ng-cloak>
         <md-content class = "md-padding autocomplete" layout = "column">
            <md-contact-chips
               ng-model = "ctrl.contacts"
               md-contacts = "ctrl.querySearch($query)"
               md-contact-name = "name"
               md-contact-image = "image"
               md-contact-email = "email"
               md-require-match = "true"
               md-highlight-flags = "i"
               filter-selected = "ctrl.filterSelected"
               placeholder = "To">
            </md-contact-chips>

            <md-list class = "fixedRows">
               <md-subheader class = "md-no-sticky">Contacts</md-subheader>
               <md-list-item class = "md-2-line contact-item"
                  ng-repeat = "(index, contact) in ctrl.allContacts"
                  ng-if = "ctrl.contacts.indexOf(contact) < 0">
                  <img ng-src = "{{contact.image}}" class = "md-avatar"
                     alt = "{{contact.name}}"/>
                  <div class = "md-list-item-text compact">
                     <h3>{{contact.name}}</h3>
                     <p>{{contact.email}}</p>
                  </div>
               </md-list-item>

               <md-list-item class = "md-2-line contact-item selected"
                  ng-repeat = "(index, contact) in ctrl.contacts">
                  <img ng-src = "{{contact.image}}" class = "md-avatar"
                     alt = "{{contact.name}}"/>
                  <div class = "md-list-item-text compact">
                     <h3>{{contact.name}}</h3>
                     <p>{{contact.email}}</p>
                  </div>
               </md-list-item>

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

結果

結果を確認します。