Преобразование плагина jQuery в директиву AngularJS
Я пытаюсь использовать плагин Input Mask jQuery в качестве директивы, но получаю следующую ошибку в ошибках консоли Chrome.
TypeError: Cannot read property 'length' of undefined
Мой код
JS
var app = angular.module('app', ['ngResource']);
app.directive('inputMask', function(){
return {
restrict: 'A',
link: function(scope, element){
element.mask();
}
}
})
HTML
<input type="text" class="form-control input-mask" data-input-mask data-mask="{mask: 00/00/0000}" placeholder="eg: 23/05/2014">
http://plnkr.co/edit/Kp3SYS0cbIfVm1gTwtE0?p=preview
Пожалуйста, помогите мне исправить это.
1 ответ
Решение
Ошибка длины связана с тем, что методу element.mask() нужен атрибут со строкой маски, которую вы хотите использовать. (в этом случае "00/00/0000"). Итак, вы должны изменить некоторые вещи, сначала ваша директива:
var app = angular.module('app', ['ngResource']);
app.directive('inputMask', function(){
return {
restrict: 'A',
scope: {
inputMask: '='
},
link: function(scope, element){
element.mask(scope.inputMask.mask);
}
}
})
А затем в HTML, чтобы вы могли установить маску в элементе.
<input type="text" class="form-control" data-input-mask="{mask: '00/00/0000'}" placeholder="eg: 23/05/2014">
Вот работа Plunker: