Преобразование плагина 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:

http://plnkr.co/edit/BbJtsF9mWx4n29CfZajF?p=preview

Другие вопросы по тегам