3

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

据我所知,require js 会为我加载所有的 js。所以我不必<script>在我的index.html

我不想要什么?有没有一种特定的方法可以在 phonegap + 骨干中加载 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>
4

1 回答 1

1

我认为您需要'create'在 Backbone 呈现页面后触发页面上的事件,正如此处文档的“增强新标记”部分中所建议的那样。

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

$( ...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;
};
于 2013-02-26T16:51:28.223 回答