我怎样才能获得Meteor的反应性并使用Jquery Mobile查看渲染以及它的视图渲染?

时间:2012-07-30 00:01:08

标签: jquery-mobile meteor

我让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呈现的数据时。

例如,如果我尝试使用JQM Listview来显示Meteor订阅,它的格式就像常规的无序列表。

这是模板代码。

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

只是呈现项目符号项目。如果我使用像JQM tuts那样的静态数据,那么渲染就可以了。

<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>

我怀疑我可能需要调用某种刷新,这意味着我必须在我想象的集合订阅上使用observe。

我在使用自定义登录按钮时遇到同样的问题。我使用模板助手返回Meteor.user()。用户名,该按钮不会被JQM格式化。如果我不使用返回用户名,那么按钮当然会通过JQM找到。

当我尝试访问Handlebars当前用户时,我也遇到了同样的问题。如果我尝试执行以下操作,将加载publicPage。

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

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

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

我只是粗略地理解,但我认为它与JQM如何以及何时格式化渲染数据以及Meteor如何以及何时格式化渲染数据有关。

有没有人对如何让JQM与Meteor表现良好有任何想法?或者如果我甚至打扰并且可能在Meteor旁边使用另一个移动前端?

由于 吊杆

1 个答案:

答案 0 :(得分:1)

您必须在数据更改时刷新。这是Meteor和JQM的完整示例应用程序:

http://jqm.meteor.com/

此处的源代码:

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

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