使用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作为依赖项。 现在加载订单是这样的:
- jquery.mobile.router
- jquery.mobile
- 路由器
在router.js
文件中尝试这个: –
define(["jquery", "jquery.mobile.router"], function($) { // your js code in router.js } );
通过在define调用中指定jquery
并将$
作为参数传入,jquery对象$
和jquery.mobile.router
中定义的关联函数现在可以在代码范围内使用(完整地包含在文件router.js
中) )。