使用browserify使pickadate正常运行的正确方法是什么?

时间:2015-01-22 09:20:54

标签: browserify pickadate

我一直在苦苦挣扎,非常沮丧,因为我无法找到一种方法让pickadate与browserify一起玩得很好。我正在从AMD迁移Backbone应用程序,但是挑选似乎无法使用它。我必须说我最近开始使用browserify,所以我不是专家,但我可以在没有任何重大事件的情况下迁移我的其余代码。当然,我很乐意接收一些关于掌握browserify的提示和参考资料:)

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

我在stackoverflow(Requiring pickadate.js with Browserify)的答案中看到了这个,但它在我的情况下不起作用。

非常感谢任何有关在何处寻求帮助的帮助或参考。

1 个答案:

答案 0 :(得分:2)

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

需要的是某种外观/包装器,以便开箱即用地展示所有的pickadate功能。

为此我直接对pickadate代码库进行了一些小改动。我添加了一个index.js作为picker.jspick.datepick.time的外观/包装,允许它们通过发布典型{ {1}}。因为pickadate将自己直接附加到jQuery对象,所以不需要将其分配给变量。您可以查看this gist with the index.js code I used

此更改是@evanvosberg的CryptoJS库通过其require('pickadate')文件中实现的相同模式公开其不同算法的方式的副本。

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

我只是向@amsul发送消息,pickadate作者要求将此更改直接集成到pickadate github repo中。

我希望那些试图在浏览器中使用pickadate的人可以找到这个解决方案,并试图让他们在一起玩得很好而感到沮丧!

向大家致以问候!