2013-02-26 70 views
3

我已经开发了一个使用骨干网的手机应用程序,需要js。 jquery mobile js从主js加载。无法在phonegap +骨干应用中渲染jquery移动样式

据我所知,要求js会为我加载所有的js。所以我没有必须手动加载它们使用<script>在我的index.html

我不期待什么?是否有一个特定的方法来加载手机+骨干网中的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

问题是什么? – 2013-02-26 13:00:22

回答

1

我认为你需要触发网页上的某'create'事件骨干已经呈现后,作为“加强新的标记”的文档here的部分建议。

但是,如果通过 的Ajax生成的内容的新标记的客户端或负载,并将其注入到一个页面,你可以触发创建事件 处理自动初始化包含在 的所有插件新的标记。这可以在任何元素上触发(即使是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; 
};