Angular Material - 芯片



md-chips是一个 Angular 指令,用作名为“芯片”的特殊组件,可用于表示少量信息,例如联系人、标签等。可以使用自定义模板来呈现芯片的内容。这可以通过指定一个包含自定义内容作为 md-chips 子元素的md-chip-template元素来实现。

属性

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

序号 参数及说明
1

* ng-model

可赋值的 Angular 表达式,用于数据绑定。

2

* ng-model

用于绑定项目列表的模型。

3 * md-transform-chip

形式为 myFunction($chip) 的表达式,调用时预期返回以下值之一:

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

  • undefined,只需添加$chip输入字符串,或者。

  • null,阻止添加芯片。

4

* md-require-match

如果为 true,并且芯片模板包含自动完成功能,则只允许选择预定义的芯片(即不能添加新的芯片)。

5

placeholder

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

6

secondary-placeholder

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

7

readonly

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

8

md-on-add

添加芯片时将调用的表达式。

9

md-on-remove

删除芯片时将调用的表达式。

10

md-on-select

选择芯片时将调用的表达式。

11

delete-hint

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

12

delete-button-label

删除按钮的标签。也隐藏并由屏幕阅读器读取。

13

md-separator-keys

用于分隔芯片的键代码数组。

示例

以下示例演示了md-chips指令和 Angular 芯片的使用。

am_chips.htm

<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>
         .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;
            
            // Lists of fruit names and Vegetable objects
            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.htm
广告