Ibm mobilefirst Worklight Studio富页面编辑器无法加载WL。*调用页面加载

Ibm mobilefirst Worklight Studio富页面编辑器无法加载WL。*调用页面加载,ibm-mobilefirst,worklight-studio,Ibm Mobilefirst,Worklight Studio,我正在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.d

我正在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.StaticAppProperties的定义造成的。如果我查看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>

//定义WL命名空间。
var WL=WL?WL:{};
/**
*WLClient配置变量。
*值由打包小工具的部署者注入。
*/
WL.StaticAppProps={
“应用程序显示名称”:“MyApp”,
“应用程序ID”:“MyApp”,
“应用程序服务URL”:“\/MyApp\/apps\/SERVICES\/”,
“应用程序版本”:“1.0”,
“环境”:“预览”,
“登录\显示\类型”:“弹出窗口”,
“登录弹出高度”:610,
“登录弹出窗口宽度”:920,
“预览_环境”:“通用”,
“WORKLIGHT_平台_版本”:“6.0.0”,
“WORKLIGHT\u ROOT\u URL”:“\/MyApp\/apps\/services\/api\/MyApp\/common\/”
};
在为各种环境生成的HTML中有类似的定义。但是看看weinre,我发现没有相应的脚本注入到RPE中显示的html中。缺少WL.StaticAppProperties的定义导致worklight.js中的代码在定义WL.Utils之前失败

我有没有办法添加WL.StaticAppProps={},以便在注入代码加载worklight.js之前添加


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

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

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

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

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

是否可以获取在RPE中自动定义的全局布尔值或符号以供使用?如果(!WL.RunningInDesignmode)。。。像这样的?至于WL.Client.invokeProcedure,是的,如果WL-dev服务器没有启动或者适配器没有部署,那就是一个问题。但是我一直在设计视图中获取服务器端的内容,因此,如果WL服务器可用,它应该可以工作,这并不是一个不可能的期望。无论如何,如果出现问题,它不应该挂起RPE。