Angular Материал: Как добавить несколько фишек, если во входной строке добавлена строка с разделителями-запятыми?
Я использую этот синтаксис для создания фишек -
<md-chips ng-model="someModel" md-separator-keys="seperatorKeys">
<md-chip-template >
<span>{{$chip}}</span>
</md-chip-template>
</md-chips>
и это часть кода контроллера.
$scope.seperatorKeys = [$mdConstant.KEY_CODE.ENTER, $mdConstant.KEY_CODE.COMMA];
Теперь я хочу создать несколько фишек, если я вставить разделенную запятую строку во входе, чтобы добавить фишки, скажем,
Напр. если я введу 1234,5678
в качестве ввода, он должен создать 1234
в качестве первого чипа и 5678
в качестве второго чипа.
Как я могу достичь этой функциональности?
Ответы
Ответ 1
По-видимому, решение очень простое: что-то вроде следующего ---
В контроллере напишите метод, который будет использоваться в md-transform-chip
, и манипулируйте массивом, содержащим чипы в области, используя этот метод.
Затем return null
, чтобы новый чип не был создан.
$scope.addMultipleChips = function (chip, model) {
var seperatedString = angular.copy(chip);
seperatedString = seperatedString.toString();
var chipsArray = seperatedString.split();
angular.forEach(chipsArray, function (chipToAdd) {
$scope[model].push(chipToAdd);
});
return null;
};
И объявите его в шаблоне следующим образом:
<md-chips ng-model="someModel" md-separator-keys="seperatorKeys"
md-transform-chip="addMultipleChips($chip, 'someModel')">
<md-chip-template >
<span>{{$chip}}</span>
</md-chip-template>
</md-chips>
Здесь JSFiddle для того же самого.
http://jsfiddle.net/vishwajeetv/2f6qscrp/255/
Ответ 2
Я создал чистое решение, которое работает в соответствии с вашими требованиями.
для Eg. когда, если вы вводите 1234,5678 в качестве входа, он должен создать 1234 в качестве первого чипа и 5678 в качестве второго чипа on-enter
, а также при вводе comma
.
Добавить атрибут md-transform-chip
в html и изменить свой контроллер, например
HTML
<md-chips ng-model="values" placeholder="Comma separated values"
md-separator-keys="seperatorKeys" md-transform-chip="addChips($chip)">
<md-chip-template>
<span>{{$chip}}</span>
</md-chip-template>
</md-chips>
контроллер
angular.module('home').controller('MainCtrl', function($scope, $mdConstant) {
$scope.seperatorKeys = [$mdConstant.KEY_CODE.ENTER, $mdConstant.KEY_CODE.COMMA];
$scope.values = [];
$scope.addChips = function(chips) {
var chipsArray = chips.split(',');
angular.forEach(chipsArray, function(chip) {
$scope.values.push(chip);
});
return null;
};
});
Работа fiddle