1

我一直在苦苦挣扎并且非常沮丧,因为我找不到一种方法来让 pickadate 与 browserify 一起玩得很好。我正在从 AMD 迁移一个 Backbone 应用程序,但 pickadate 似乎无法使用它。我必须说我最近开始使用 browserify,所以我不是专家,但我可以迁移我的其余代码而不会发生任何重大事件。当然,我愿意接受一些关于浏览器大师的提示和参考:)

我通过 npm 安装了 jquery 和 pickadate,当尝试使用 pickadate 时出现经典错误: undefined is not a function 我使用了这种要求方式(注意使用时未将要求分配给变量): require("jquery"); require("pickadate");

我在 stackoverflow 的答案中看到了这一点(使用 Browserify 需要 pickadate.js),但在我的情况下它不起作用。

任何有关在哪里可以找到帮助的帮助或参考将不胜感激。

4

1 回答 1

2

当前版本的 pickadate 作为模块只公开了 PickerConstructor 的实例,但它既不公开 DatePicker 也不公开 TimePicker 所以每次我们尝试实例化日期选择器或时间选择器时,我们都会收到错误undefined is not a function,因为它们都没有被加载,所以没有jquery.extend已进行调用以将它们附加到 jQuery 对象。

需要某种外观/包装器来公开所有的pickadate 功能。

为此,我直接对pickadate 代码库进行了一些小改动。我添加了一个index.js作为 , 的外观/包装器的picker.js,pick.datepick.time, 通过发布典型的require('pickadate'). 它不需要分配给变量,因为 pickadate 直接将自身附加到 jQuery 对象。您可以使用我使用的代码检查此要点index.js

此更改是@evanvosberg 的 CryptoJS 库通过其index.js文件中实现的相同模式公开其不同算法的方式的副本。

唯一的额外更改是修改mainpickadate中的属性package.json以指向index.js.

我刚刚向pickadate作者@amsul 发送了一条消息,询问是否可以将这些更改直接集成到pickadate github 存储库中。

我希望尝试将 pickadate 与 browserify 一起使用的人可以找到这个解决方案,并且不要因为试图让他们一起玩得好而感到沮丧!

向大家问好!

于 2015-01-23T08:44:18.507 回答