Angular Material - Chips 小部件

md-chips 是一个 Angular 指令,用作称为 Chip 的特殊组件,可用于表示一小组信息,例如联系人、标签等。自定义模板可用于呈现 Chip 的内容。 这可以通过将具有自定义内容的 md-chip-template 元素指定为 md-chips 的子元素来实现。


属性

下表列出了md-chips的参数及不同属性的说明。

Sr.No 参数和描述
1

* ng-model

可分配 angular 表达式进行数据绑定。

2

* ng-model

将项目列表绑定到的模型。

3 * md-transform-chip

myFunction($chip) 形式的表达式,在调用时需要以下返回值之一 −

  • 代表 $chip 输入字符串的对象。

  • 未定义,仅添加 $chip 输入字符串,或者。

  • null 以防止附加 chip。

4

* md-require-match

如果为 true,并且筹码模板包含自动完成功能,则仅允许选择预定义的 chips(即您无法添加新的 chips)。

5

placeholder

将转发到输入的占位符文本。

6

secondary-placeholder

将转发到输入的占位符文本,当列表中至少有一项时显示。

7

readonly

禁用列表操作(删除或添加列表项),隐藏输入和删除按钮。

8

md-on-add

添加 chip 时将调用的表达式。

9

md-on-remove

当 chip 被移除时将调用的表达式。

10

md-on-select

选择一个 chip 时将调用的表达式。

11

delete-hint

屏幕阅读器读取的字符串,指示用户按删除键将删除 chip。

12

delete-button-label

删除按钮的标签。 也可以被屏幕阅读器隐藏和读取。

13

md-separator-keys

用于分隔 chip 的按键代码数组。


示例

以下示例展示了 md-chips 指令的使用以及 angular chips 的使用。

am_chips.html

<html lang = "en">
   <head>
      <link rel = "stylesheet"
         href = "https://www.w3ccoo.com/lib/angular_material/1.0.0/angular-material.min.css">
      <script src = "https://cdn.staticfile.org/angular.js/1.4.8/angular.min.js"></script>
      <script src = "https://cdn.staticfile.org/angular.js/1.4.8/angular-animate.min.js"></script>
      <script src = "https://cdn.staticfile.org/angular.js/1.4.8/angular-aria.min.js"></script>
      <script src = "https://cdn.staticfile.org/angular.js/1.4.8/angular-messages.min.js"></script>
      <script src = "https://www.w3ccoo.com/lib/angular_material/1.0.0/angular-material.min.js"></script>
      <link rel = "stylesheet" href = "https://fonts.googleapis.com/icon?family=Material+Icons">
      
      <style>
         .closeButton {
            position: relative;
            height: 24px;
            width: 24px;
            line-height: 30px;
            text-align: center;
            background: rgba(0, 0, 0, 0.3);
            border-radius: 50%;
            border: none;
            box-shadow: none;
            padding: 0;
            margin: 3px;
            transition: background 0.15s linear;
            display: block; 
         }
      </style>
      
      <script language = "javascript">
         angular
            .module('firstApplication', ['ngMaterial'])
            .controller('chipController', chipController);

         function chipController ($scope) {
            var self = this;
            self.readonly = false;
            
            // 水果名称和蔬菜对象列表
            self.fruitNames = ['Apple', 'Banana', 'Orange'];
            self.roFruitNames = angular.copy(self.fruitNames);
            self.tags = [];
            
            self.vegObjs = [
               {
                  'name' : 'Broccoli',
                  'type' : 'Brassica'
               },
               {
                  'name' : 'Cabbage',
                  'type' : 'Brassica'
               },
               {
                  'name' : 'Carrot',
                  'type' : 'Umbelliferous'
               }
            ];
            
            self.newVeg = function(chip) {
               return {
                  name: chip,
                  type: 'unknown'
               };
            };
         }          
      </script>      
   </head>
   
   <body ng-app = "firstApplication"> 
      <div ng-controller = "chipController as ctrl" layout = "column" ng-cloak>
         <md-chips ng-model = "ctrl.fruitNames" readonly = "ctrl.readonly">
            </md-chips>
         
         <md-chips class = "custom-chips" ng-model = "ctrl.vegObjs"
            readonly = "ctrl.readonly" md-transform-chip = "ctrl.newVeg($chip)">
            <md-chip-template>
               <span>
                  <strong>[{{$index}}] {{$chip.name}}</strong>
                  <em>({{$chip.type}})</em>
               </span>
            </md-chip-template>
         
            <button md-chip-remove class = "md-primary closeButton">
               <md-icon md-svg-icon = "md-close"></md-icon>
            </button>
         </md-chips>
         
         <br/>
         <md-checkbox ng-model = "ctrl.readonly">Readonly</md-checkbox>
      </div>
   </body>
</html>

结果

验证结果。

❮ angular_material_widgets.html