2012-04-13 58 views
15

流星给我留下了深刻的印象,并希望将它与jQuery-Mobile结合使用。我想知道是否有人已经构建了一个示例集成应用程序。如果没有,一些指导方针会很好。jQuery-Mobile流星样本集成和/或集成指南

问候,

塞德里克

+6

我也对此感兴趣,并一直试图将其整合。 jQuery Mobile初始化页面并在加载时修改DOM。然后流星初始化并将其自己的html添加到DOM和这些冲突。在'mobileinit'事件中设置'$ .mobile.autoInitializePage = false;'应该避免发生这种情况。这就像我已经得到。如果/当我拿出一份完整的样本/指南时,将会用答案更新。 – rmarscher 2012-04-22 19:29:17

+2

只需将jquery.js和jquery-mobile.js放在/ client目录中即可。这样他们比其他脚本加载更晚。不要从包中使用jquery。我尝试过在其他答案中提到的包装jquery-mobile,但由于流星的JavaScript加载顺序,我遇到了更多麻烦。 – 2012-07-07 02:16:53

回答

6

我想知道这个问题,以及,所以我做了一个示例应用程序:

http://jqmdemo.meteor.com/

它似乎运作良好。你可以在这里找到源代码:

https://github.com/snez/jqm-meteor

使用两个在一起时,有几个陷阱,请参阅代码中的注释。

UPDATE:它看起来像meteor.com正在滚动升级到流星框架打破那里的旧代码。仅将此项目用作参考,因为有更好的方法可以使用较新的框架版本完成相同的工作。

+0

很酷,很好的工作! – 2012-11-08 21:45:37

+0

这个程序不起作用。我得到'更新失败:访问被拒绝。因此,我无法验证这实际上是否解决了@rmarscher提到的问题:如果您打开了两个浏览器并修改了其中的一个值,流星将更新html并更改jQuery移动版的更改。 – jchook 2013-06-24 03:20:33

+0

有关信息,演示的更新的工作版本可在http://jqmdemo.meteor.com/找到。 – 2015-07-18 17:10:04

3

我建议采取看看jQuery的包中的文件夹/packages/jquery

所有这些都是将jquery.js文件添加到文件堆栈中以发送到客户端。 如果你是在这之后,你可以添加自己的包名为jquery-mobile并包含它所需的文件。

见它是如何工作的package.js文件:

https://github.com/meteor/meteor/blob/master/packages/jquery/package.js 

所以只需添加移动文件到您的jQuery移动封装,这样做:

Package.on_use(function (api) { 
    api.add_files('jquery.mobile-1.1.0.min.css', 'client'); 
    api.add_files('jquery.mobile-1.1.0.min.js', 'client'); 
}); 
+0

哦,然后通过使用“流星添加”或将其添加到您的应用程序目录中的.meteor/packages文件中 – jonathanKingston 2012-04-13 15:51:19

+0

另外,如果您从N1mmy阅读流星开发者之一的回复,他建议API将改变: http://stackoverflow.com/questions/10114526/how-to-build-a-meteor-package 因此,我可能会建议将本地文件包含在js文件中,而不是放入您的模板中。 – jonathanKingston 2012-04-13 16:41:06

4

我没有当我试图将客户端目录中的框架文件打包时,能够让jQuery Mobile工作。 Meteor在尝试设置DOCTYPE的JS文件上抛出一个错误,甚至是从未引用过的示例文件夹中的文件。通过使用CDN托管的版本和禁用autoInitializePage(如上面注释中所述),我可以在不访问任何未公开的API的情况下工作。

<link rel="stylesheet" href="http://code.jquery.com/mobile/1.0.1/jquery.mobile-1.0.1.min.css" /> 
<script src="http://code.jquery.com/jquery-1.6.4.min.js"></script> 
<script src="http://code.jquery.com/mobile/1.0.1/jquery.mobile-1.0.1.min.js"></script> 
<script type="text/javascript"> 
    $(document).bind("mobileinit", function(event, data){ 
      $.mobile.autoInitializePage = false; 
    });  
</script>