如何从Backbone视图在动态客户端模板中呈现jQuery Mobile?

Gij*_*ijs 4 jquery coffeescript jquery-mobile backbone.js

我正在使用早午餐建立一个移动网站.

对于用户界面,我想使用jQuery Mobile.

我开始调整现有的home_view(Backbone.View):

class exports.HomeView extends Backbone.View
  id: 'home-view'

  render: ->
    console.log "render() homepage"

    $(@el).html require('./templates/home')

    $.mobile.changePage('#homepage', 'slide', false, false)
    console.log $(@el)

    @
Run Code Online (Sandbox Code Playgroud)

这不起作用,我怀疑这是因为Backbone在jQuery Mobile初始化之前或之后"注入"html或其他东西?

我可以使用Firebug和Chrome的Inspect Element检查标记,但div元素设置为display:none; (所以这似乎再次指向jQuery Mobile没有初始化或类似的东西)

./templates/home是一个简单的'eco'模板,带有一些基本的jQuery Mobile标记,它看起来像这样:(并注入body标签)

<div data-role="page" id="homepage">
    <div data-role="navbar">
        <ul>
            <li><a href="/" class="ui-btn-active">Home</a></li>
        <li><a href="#helppage">Help</a></li>
    </ul>
    </div><!-- /navbar -->

    <div data-role="content">
        <div id="home">
            <h1>Home</h1>
        </div>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

我搜索了SA和谷歌的解决方案,但没有设法解决它.任何提示都将受到高度赞赏.谢谢!

San*_*zen 7

正如在对此问题的评论中某处所述,您可以在呈现页面后执行此操作:

$("#pageId").trigger("create");
Run Code Online (Sandbox Code Playgroud)

这将迫使jQuery Mobile更新您的页面并修复您的问题.