我在 OSX Lion 上的 64 位 Eclipse Juno 中使用 Worklight Studio 6.0.0.20130917-1749。
我发现如果我在 jQueryMobile (1.3.1) pagebeforeshow 处理程序中调用 WL.Client.invokeProcedure(),甚至 WL.Logger.debug(),它会导致富页面编辑器的设计部分当我尝试切换到该页面时挂起。
$("#myPage").on("pagebeforeshow", function(){WL.Logger.debug("loading myPage...");});
如果我在“移动导航”视图中双击 myPage,则该页面不会显示,并且我无法切换到应用程序中的任何其他页面,或对他的设计窗格执行任何操作。刷新按钮并没有解决它(它只是试图加载相同的页面,我就回到了我开始的地方)我唯一能做的就是关闭 html 文件并重新打开它。
这似乎是由于在 RPE 中运行的代码中缺少 WL.StaticAppProperites 定义造成的。如果我在 chrome 下查看应用程序的公共资源的 html 源,我会看到一个定义:
<script>
// Define WL namespace.
var WL = WL ? WL : {};
/**
* WLClient configuration variables.
* Values are injected by the deployer that packs the gadget.
*/
WL.StaticAppProps = {
"APP_DISPLAY_NAME": "MyApp",
"APP_ID": "MyApp",
"APP_SERVICES_URL": "\/MyApp\/apps\/services\/",
"APP_VERSION": "1.0",
"ENVIRONMENT": "preview",
"LOGIN_DISPLAY_TYPE": "popup",
"LOGIN_POPUP_HEIGHT": 610,
"LOGIN_POPUP_WIDTH": 920,
"PREVIEW_ENVIRONMENT": "common",
"WORKLIGHT_PLATFORM_VERSION": "6.0.0",
"WORKLIGHT_ROOT_URL": "\/MyApp\/apps\/services\/api\/MyApp\/common\/"
};</script>
在为各种环境生成的 HTML 中有类似的定义。但是在 weinre 中,我看到 RPE 中显示的 html 中没有注入相应的脚本。缺少 WL.StaticAppProperties 的定义导致 worklight.js 中的代码在 WL.Utils 的定义之前失败。
我有什么办法可以添加 WL.StaticAppProps = {} 以便在注入加载 worklight.js 的代码之前出现?
这个问题还有其他解决方法吗?