Worklight Studio 富页面编辑器在页面加载中无法进行 WL.* 调用



我在OSX Lion上使用64位Eclipse Juno的Worklight Studio 6.0.0.20130917-1749。

我发现如果我给 WL 打电话。Client.invokeProcedure((,甚至 WL。在jQueryMobile(1.3.1(页面之前显示处理程序中的Logger.debug((,当我尝试切换到该页面时,它会导致富页面编辑器的设计部分挂起。

$("#myPage").on("pagebeforeshow", function(){WL.Logger.debug("loading myPage...");});

如果我在移动导航视图中双击 myPage,该页面不会显示,并且我无法切换到应用程序中的任何其他页面,也无法使用设计窗格执行任何操作。 刷新按钮无法修复它(它只是尝试加载相同的页面,而我又回到了开始的地方(我唯一能做的就是关闭html文件并重新打开它。

这似乎是由于缺少 WL 的定义造成的。在 RPE 中运行的代码中的静态应用属性。 如果我在 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 的定义。静态应用属性导致 worklight.js 中的代码在定义 WL 之前失败。实用工具。

我有什么办法可以添加 WL。StaticAppProps = {} 这样它就会出现在注入以加载 worklight 的代码之前.js?

此问题还有其他解决方法吗?

编辑器正在定义该 WL。StaticAppProps 属性在幕后,但它位于附加的注入.js文件中,而不是像运行页面那样在内联脚本块中。 该脚本在编辑器标记中的位置可能不正确,我们将对此进行调查。

但是,这里有一个更大的问题,即编辑器中的页面无法调用 Worklight 服务器。 由于编辑器始终需要独立于预览服务器是否已发布和启动而运行,因此它使用自己的机制将 Web 资源加载到"设计"窗格中。 因此,源服务器不是 Worklight 开发服务器,尝试调用服务器端逻辑将得不到应答。 我相信这更有可能是你看到的挂起场景的原因。

一般建议使用编辑器构造页面的 UI 标记,然后在 UI 通常完成后开始连接服务调用。 此时,预览应用程序可能会转移到移动浏览器模拟器和/或本机设备测试。 为了继续在编辑器中执行增量 UI 工作,您还可以添加一些临时条件逻辑,以避免在执行设计工作时调用(或模拟(服务器调用,例如:

var designMode = true;   // switch to false for real server preview
if(!designMode) {
    // your service invocations here
}

最新更新