在Require.js完成设置配置后执行javascript脚本
我正在创建一个Phonegap应用程序。 我正在使用Require.js并正在实现推送通知。 在我的index.html文件中,我有:
app.initialize();
app.js定义Require.js模块的基本URL并启动路由器。 Index.html定义了“deviceready”监听器。 问题是在index.js中,我需要对Require.js模块进行压缩,比如Jquery。 但是,例如,在index.js中,如果我这样做:
initialize: function() { require(["jquery"], function () { }); },
我收到错误:
Uncaught Error: Script error for: jquery http://requirejs.org/docs/errors.html#scripterror at file:///android_asset/www/js/require.js:8 Uncaught Error: Load timeout for modules: backbone http://requirejs.org/docs/errors.html#timeout at file:///android_asset/www/js/require.js:8
我认为这是因为在app.js仍在设置路径等时调用了index.js。我需要在app.js完成后执行index.js。 我不能用:
$(document).ready(function() { app.initialize(); });
因为Jquery作为模块加载所以会抛出错误。 我也无法将index.js作为模块加载,因为我在另一个SO问题中写了一个问题。
任何想法我能做什么?
如果使用单独的标记而不是
data-main
加载主文件,那么RequireJS的配置将立即运行:
这可能会有问题,具体取决于js/app.js
包含的内容。 如果它导致问题,那么您可以将此文件拆分为a)仅包含RequireJS配置的文件(让我们称之为js/requirejs-config.js
),b)适当的应用程序(仍然称为js/app.js
)。 所以类似于:
或者你可以在你的配置中添加一个顶级deps
字段,如deps: ["js/app"]
,以避免需要第三个标记。
我在ios上使用我的cordova应用程序遇到了同样的问题。 动态加载失败并出现相同的错误,但我在浏览器上运行的代码相同。
我的解决方法是首先通过在data-main中定义’app’的shim.deps来静态加载模块,因此模块最初通过require加载。 随后,当需要模块时它可用 – require([“jquery”])然后就可以了。
绝对想要找到问题的根源,但是现在我可以继续了。
- 使用PHP显示未列出的自动完成搜索结果
- 如何使用javascript / jquery将值传递给Android phonegap中的HTML5video标签src属性?
- jQM / PhoneGap:当state = 1 bug时导航开始了吗?
- 没有获得401未经授权的Cordova jquery ajax电话,Upto Phonegap 1.4它工作正常
- jQuery跨域Ajax
- ReferenceError:找不到变量:$,jquerymobile + phonegap
- jQuery Mobile和固定的页脚
- 由于虚拟键盘导致的window.resize会导致jquery mobile出现问题
- 应用程序浏览器和本地存储中的Phonegap