我使用骨干开发了一个使用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>
答案 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;
};