【问题标题】:Converting jQuery plugin to AngularJS Directive将 jQuery 插件转换为 AngularJS 指令
【发布时间】:2015-05-26 19:15:03
【问题描述】:

我正在尝试使用输入掩码 jQuery plugin 作为指令,但在 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

请帮我解决这个问题。

【问题讨论】:

标签: angularjs angularjs-directive jquery-inputmask


【解决方案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

【讨论】:

  • 这太酷了,谢谢。我认为每当插件需要数据属性中的某些内容时,我都需要以这种方式处理。非常感谢您的回答和简单的解释。爱你...
猜你喜欢
  • 1970-01-01
  • 2015-04-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-02
  • 1970-01-01
相关资源
最近更新 更多