1

我有 Jquery Mobile 工作,并发现让它工作的最佳方法是将它包含在 /client/ 目录中。所以,我的 /client/ 目录中有以下文件

jquery.js jquery-mobile.js jquery-mobile.css

然后我将它包含在我的 index.html 中

<script type="text/javascript">
   $( document ).bind( "mobileinit", function( event, data ){
        $.mobile.autoInitializePage = false;
   }    
</script>

我尝试创建一个智能包,但由于某种原因,加载顺序使 jquery 插件无效。我尝试只在 HEAD 中使用引用,但由于某种原因会使 jquery 插件无效。上面的工作,页面转换,视图渲染,我什至可以使用 Meteor auth 分支和渲染订阅。

我现在遇到的问题是,当 Meteor 用数据更新 DOM 并呈现它没有用 JQM 呈现的数据时。

For example, if I try to use a JQM Listview to display a Meteor subscription it just formats like a regular un-ordered list .

Here is the template code.

{{#each get_groups}}
    <ul data-role="listview" data-theme="a">
      <li>{{name}}</li>
    </ul>
  {{/each}}

Which just renders as bulleted items. If I use static data like the JQM tuts show it renders fine.

<ul data-role="listview" data-theme="a">
    <li><a href="acura.html">Acura</a></li>
    <li><a href="audi.html">Audi</a></li>
    <li><a href="bmw.html">BMW</a></li>
  </ul>

I am suspect I may need to call some kind of refresh, which means I would have to use observe on the collection subscriptions I imagine.

I am having the same problem with a custom login button. I use a template helper to return the Meteor.user().username and the button doesn't get formatted by JQM. If I don't use return the username the button of course renders find through JQM.

I also have the same problem when I try to access the Handlebars current user. If I try to do the following the publicPage will load.

{{#if currentUser}}
   {{>privatePage}}
{{else}}
   {{>publicPage}}
{{/if}}

一旦我登录 privatePage 快速闪烁,然后只是一个白屏。如果我删除对 currentUser 的引用,那么我可以登录并使用 JQM changePage 方法来加载 privatePage。

$.mobile.changePage("#privatePage");

我只有一个粗略的了解,但我认为这与 JQM 如何以及何时格式化数据以进行渲染与 Meteor 如何以及何时格式化数据以进行渲染有关。

有人对我如何让 JQM 与 Meteor 表现得很好有任何想法吗?或者我是否应该打扰并可能在 Meteor 旁边使用另一个移动前端?

谢谢斯蒂夫

4

1 回答 1

1

当数据更改时,您确实必须刷新。这是一个带有 Meteor 和 JQM 的完整示例应用程序:

http://jqm.meteor.com/

源代码在这里:

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

请注意第17行和第 38行,当渲染元素时,您必须刷新它并将任何自定义事件重新绑定到它。

于 2012-10-20T17:49:53.993 回答