【问题标题】:Show all choices on click with the Chips & autocomplete components of AngularJS Material使用 AngularJS Material 的芯片和自动完成组件单击显示所有选项
【发布时间】:2017-11-09 08:59:19
【问题描述】:

我在 AngularJS 应用程序中使用材料的 md-contact-chips 组件和自动完成功能。我是 Angular 的新手,我试图找出如何在开始输入关键字之前显示整个选项列表,但只是在单击输入之后。这是代码的骨架:

<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;

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

            self.filterSelected = true;
            self.querySearch = querySearch;

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

            function createFilterFor(query) {
               var lowercaseQuery = angular.lowercase(query);
               return function filterFn(object) {
                  return (object._lowername.indexOf(lowercaseQuery) != -1);;
               };
            }
            
            function loadObjectsList(objectsList) {
               return objectsList.map(function (c, index) {
                     var filteredObject = {
                        name: c,
                     };
                     filteredObject._lowername = filteredObject.name.toLowerCase();
                     return filteredObject;
               });
            }
         }                 
      </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, ctrl.allContacts)"
               md-contact-name="name"
               md-require-match="true"
               md-highlight-flags="i"
               filter-selected="ctrl.filterSelected"
               placeholder="To">
            </md-contact-chips>
            <md-list class="fixedRows">
               <md-list-item class="contact-item" ng-repeat="(index, contact) in ctrl.allContacts"
                  ng-if="ctrl.contacts.indexOf(contact) < 0">
                     <span>{{contact.name}}</span>
               </md-list-item>
            </md-list>
          </md-content>
      </div>
   </body>
</html>

我如何在本地实现这个?

干杯

【问题讨论】:

    标签: angularjs autocomplete angular-material


    【解决方案1】:

    有点晚了,但是:

     <md-autocomplete md-min-length="0" ...>
     <md-contact-chips md-min-length="0" ...>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-14
      • 1970-01-01
      • 2017-12-28
      • 2018-08-06
      • 1970-01-01
      相关资源
      最近更新 更多