无法在phonegap + backbone app中呈现jquery移动样式

时间:2013-02-26 03:43:38

标签: cordova jquery-mobile backbone.js requirejs

我使用骨干开发了一个使用phonegap的应用程序,需要js。 jquery mobile js从主js加载。

根据我的知识,要求js将为我加载所有js。所以我不必在我的<script>

中使用index.html手动加载它们

我不想要的是什么?是否有一种特定的方法来加载phonegap + backbone中的jqm 我在这里加载了jqueryMobile库。

require.config( {
  paths: {
        "jquery": "libs/jquery",
        "jquerymobile": "libs/jquerymobile",
        "underscore": "libs/lodash",
        "backbone": "libs/backbone"
  },
  shim: {

        "backbone": {
              "deps": [ "underscore", "jquery" ],
              "exports": "Backbone"  //attaches "Backbone" to the window object
        }
  }} );
require([ "jquery", "backbone", "routers/mobileRouter" ], function( $, Backbone, Mobile ) {
$( document ).on( "mobileinit",
    function() {
        $.mobile.linkBindingEnabled = false;
        $.mobile.hashListeningEnabled = false;
    }
)
require( [ "jquerymobile" ], function() {
    this.router = new Mobile();
}); } );

这是我的index.html head。因为我最初加载我的移动js,我不需要我的标题中的样式的jqm脚本。

<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black" />
<title>RideSmart App</title>
<script src="js/libs/require.js" data-main="js/mobile"></script>
<link rel="stylesheet" href="css/jqm1.3.0.min.css" />
<script type="text/javascript" charset="utf-8" src="jsLib/phonegap.js"></script>  
</head>

1 个答案:

答案 0 :(得分:1)

我认为您需要在Backbone渲染后在您的网页上触发'create'事件,如文档here的“增强新标记”部分所述。

  

但是,如果您通过生成新标记客户端或加载内容   Ajax并将其注入页面,您可以触发create事件   处理其中包含的所有插件的自动初始化   新标记。这可以在任何元素(甚至是页面)上触发   div本身),为您节省了手动初始化每个插件的任务   (列表视图按钮,选择等)。

$( ...new markup that contains widgets... ).appendTo( ".ui-page" ).trigger( "create" );

如果您使用Marionette,则可以覆盖它提供的onRender挂钩以自动执行此操作。像这样:

// Override Marionette onRender and onShow events so JQM 'create' event is
// triggered on view's element. This ensures dynamically created content
// is given the jQuery Mobile treatment
Marionette.View.prototype.onRender = Marionette.View.prototype.onShow = function() {
  this.$el.trigger('create');
  return this;
};