使用jQueryMobile-Router的Require.js

我在我的html中加载了包含这样的jQuery的require.js:

 

我的requires.js的内容:

 require.config( { paths: { "jquery.mobile": "lib/jquery.mobile", "jquery.mobile.router": "lib/jquery.mobile.router" }, shim: { "jquery.mobile" : { "exports": "$.mobile" }, "jquery.mobile.router": { "deps": [ "jquery.mobile" ], "exports": "$.mobile.Router" } } } ); require(["jquery.mobile.router" ], function() { require(["router"]); } ); 

在我的router.js中,我创建了一个jquery移动路由器插件的新实例:

 router = new $.mobile.Router(...); 

这给了我这个错误:

未捕获的TypeError:undefined不是函数

当我输出$和$ .mobile时,它们都是定义的,只是$ .mobile.Router是未定义的。

我在这做错了什么?

我的问题是我添加了jquery.mobile作为jquery.mobile.router的依赖项,因此将首先加载jQuery mobile,其中路由器的文档说明:

必须在jQuery Mobile之前加载jQuery Mobile路由器javascript文件。

这就是我改变我的requires.js以解决问题的方法:

 require.config( { paths: { "jquery.mobile": "lib/jquery.mobile", "jquery.mobile.router": "lib/jquery.mobile.router" }, shim: { "router": { "deps" : ["jquery.mobile"] }, "jquery.mobile" : { "deps" : [ "jquery.mobile.router"], "exports": "$.mobile" }, "jquery.mobile.router": { "exports": "$.mobile.Router" } } }); require(["router"]); 

现在我只需要我的router.js并加载jquery.mobile和jquery.mobile.router作为依赖项。 现在加载订单是这样的:

  1. jquery.mobile.router
  2. jquery.mobile
  3. 路由器

router.js文件中尝试这个: –

 define(["jquery", "jquery.mobile.router"], function($) { // your js code in router.js } ); 

通过在define调用中指定jquery并将$作为参数传入,jquery对象$jquery.mobile.router中定义的关联函数现在可以在代码范围内使用(完整地包含在文件router.js中) )。