我一直在苦苦挣扎,非常沮丧,因为我无法找到一种方法让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)的答案中看到了这个,但它在我的情况下不起作用。
非常感谢任何有关在何处寻求帮助的帮助或参考。
答案 0 :(得分:2)
作为模块的当前版本的pickadate只公开PickerConstructor的实例,但它没有公开DatePicker和TimePicker,因此每当我们尝试实例化日期选择器或时间选择器时,我们都会收到错误undefined is not a function
因为它们都没有被加载,因此没有进行jquery.extend
调用以将它们附加到jQuery对象。
需要的是某种外观/包装器,以便开箱即用地展示所有的pickadate功能。
为此我直接对pickadate代码库进行了一些小改动。我添加了一个index.js
作为picker.js
,pick.date
和pick.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的人可以找到这个解决方案,并试图让他们在一起玩得很好而感到沮丧!
向大家致以问候!