CXJS 与现有 webapp 集成时如何从全局范围启动 Apploop?
CXJS How can I start the Apploop from global scope when integrating with existing webapp?
我有以下问题。
Web 应用程序以 index.html 开头,这是 cxjs 应用程序的起点。但这是在一个框架内(M-Files UX API)。该框架在全局范围内调用一个函数 (OnNewDashboard()) 并注入一个 api 和我的 cxjs-app 所需的数据。所以,我需要在全局范围内的这个函数中启动应用程序循环。
我该怎么做?
否则我必须首先进行用户交互才能访问 api 和框架的数据,这对我不利,因为我想在启动时直接显示来自框架的数据。
谢谢
我实际上还没有找到一个解决方案来有效地混合 ecmascript 6 text/b abel 和 5 text/javascript(参见原始问题),同时为旧的 webapp 构建一个新的前端。但我发现,您可以使用子组件的可见性来等待某个对象被注入到全局范围内。由于控制器中的 onInit 在可见性为真之前不会执行,因此这是一种解决方法。
Marco,你有更好的办法吗?
示例:
export class myController extends Controller
{
onInit(){
waitforData();
function waitforData() {
if (myGlobalExternalDataObject != undefined)
{
dashboardStore.set("$SpecialComponent.visible", true);
dashboardStore.set("$load.visible", false);
return;
}
setTimeout(function () {
waitforData();
}, 200);
}
}
}
export default <cx>
<SpecialComponent/>
<h2 putInto="header" visible={{bind: "$load.visible", defaultValue: true}} >
Loading... please wait.
</h2>
<Section visible={{bind: "$load.visible", defaultValue: true}} mod="well" controller={myController}>
<p ws >
Loading... please wait.
</p>
</Section>
</cx>
我有以下问题。 Web 应用程序以 index.html 开头,这是 cxjs 应用程序的起点。但这是在一个框架内(M-Files UX API)。该框架在全局范围内调用一个函数 (OnNewDashboard()) 并注入一个 api 和我的 cxjs-app 所需的数据。所以,我需要在全局范围内的这个函数中启动应用程序循环。
我该怎么做?
否则我必须首先进行用户交互才能访问 api 和框架的数据,这对我不利,因为我想在启动时直接显示来自框架的数据。
谢谢
我实际上还没有找到一个解决方案来有效地混合 ecmascript 6 text/b abel 和 5 text/javascript(参见原始问题),同时为旧的 webapp 构建一个新的前端。但我发现,您可以使用子组件的可见性来等待某个对象被注入到全局范围内。由于控制器中的 onInit 在可见性为真之前不会执行,因此这是一种解决方法。 Marco,你有更好的办法吗? 示例:
export class myController extends Controller
{
onInit(){
waitforData();
function waitforData() {
if (myGlobalExternalDataObject != undefined)
{
dashboardStore.set("$SpecialComponent.visible", true);
dashboardStore.set("$load.visible", false);
return;
}
setTimeout(function () {
waitforData();
}, 200);
}
}
}
export default <cx>
<SpecialComponent/>
<h2 putInto="header" visible={{bind: "$load.visible", defaultValue: true}} >
Loading... please wait.
</h2>
<Section visible={{bind: "$load.visible", defaultValue: true}} mod="well" controller={myController}>
<p ws >
Loading... please wait.
</p>
</Section>
</cx>