如何在 Aurelia 中导入和使用 RobinHerbots 的 Inputmask

Posted

技术标签:

【中文标题】如何在 Aurelia 中导入和使用 RobinHerbots 的 Inputmask【英文标题】:How to import and use RobinHerbots' Inputmask in Aurelia 【发布时间】:2018-10-10 19:06:48 【问题描述】:

我正在尝试在 Aurelia 中使用 RobinHerbots' Inputmask,但似乎无法正确导入它。

我遇到过有人在 Aurelia 中讨论使用此插件,但我找不到有关如何执行此操作的具体文档。

npm i inputmask --save 之后,这是我在aurelia.json 中的内容:


   "name": "inputmask",
   "path": "../node_modules/inputmask/dist",
   "main": "jquery.inputmask.bundle",
   "deps": [
      "jquery"
      ]

在我的package.json 中,我声明了inputmask

"dependencies": 
//...
"inputmask": "^3.3.11",
//...

我没有看到运行 au build 的错误。但是,当我使用 ES6 导入时,我无法使用它的任何属性。

import Inputmask from "inputmask";

attached() 
     let im = new Inputmask('999-99-9999');
     let select = document.getElementById('social-security-number-field');
     im.mask(select);

产量Unhandled promise rejection TypeError: inputmask_1.default is not a constructorUncaught TypeError: Cannot read property 'value' of undefined

Inputmask error in the console

当我尝试使用 data-inputmask 属性时,它也不起作用。

<input type="text" class="form-control" id="social-security-number-field" value.bind="ssn" data-inputmask="'mask': '999-99-9999'">

Input is not successfully masked using data-inputmask

我错过了什么吗?我只有导入专门用于 Aurelia 的插件的经验,或者专门声明它们可以与 Aurelia 一起使用,所以我确实可能遗漏了一些重要的东西。

【问题讨论】:

【参考方案1】:

jquery.inputmask.bundle.js 捆绑包不太兼容。他们将它与 webpack 捆绑在一起。它没有任何默认导出,可能仅适用于 webpack。

尝试导入常规构建输出:


   "name": "inputmask",
   "path": "../node_modules/inputmask/dist/inputmask",
   "main": "inputmask",
   "deps": ["jquery"]

这将需要您可能还需要包含在 aurelia.json 中的其他依赖项,但如果是这种情况,您会收到适当的警告。

编辑:

您还应该将导入语句更改为:

import inputmask from "inputmask";

到:

import * as inputmask from "inputmask";

inputmask 没有默认导出,这就是导入语句不起作用的原因。

【讨论】:

感谢您的帮助。我试过你的解决方案。没有构建错误,但当我尝试在类中使用 Inputmask 时仍然收到 Unhandled promise rejection TypeError: inputmask_1.default is not a constructorUncaught TypeError: Cannot read property 'value' of undefined,当我尝试使用 data-inputmask 属性时出现此错误 Uncaught TypeError: Cannot read property 'substring' of null @flea 哦,抱歉,我刚刚注意到我遗漏了一些内容,您应该将 import inputmask from "inputmask"; 更改为 import * as inputmask from "inputmask";。更新了我的答案。

以上是关于如何在 Aurelia 中导入和使用 RobinHerbots 的 Inputmask的主要内容,如果未能解决你的问题,请参考以下文章

如何在 material-ui 主题中导入和使用自定义字体?

如何在 Laravel 项目中导入和使用 vue-good-table Vue 组件

如何在ionic 4项目中导入和使用自定义cordova插件

如何使用python在机器人框架中导入和使用用户定义的类

在模板内的 vuejs 组件中导入和使用类

如何在flutter中导入和使用另一个dart文件中的函数