检查是否加载了 Component-preload.js
Check if Component-preload.js was loaded
我正在 SAPUI5/OpenUI5 中寻找一种方法来确定 Component-preload.js
是否已加载或原始控制器和视图是否已加载。
到目前为止...
- 我试图通过访问全局 JS 对象 my.namespace.controller、my.namespace.Component 等来利用我的项目的命名空间,并试图找出加载
Component-preload.js
与未加载时的差异已加载。
- 我尝试使用 $.sap.getAllDeclaredModules() 并查看加载与未加载时的差异。
- 我试图从我的 SAPUI5 代码中捕获
Component-preload.js
的 onload 事件,但我发现没有可靠的方法在加载发生之前附加我的事件处理程序。
- 我试图将一个虚拟控制器编译到我的
Component-preload.js
中,但它并没有真正在项目中使用。但是我没有找到一种方法来在加载 Component-preload.js
与未加载时的状态之间产生任何差异。
我显然运行没主意了。
不确定这是否是最优的,但我想出了一个小而简单的解决方案:
以下函数尝试加载组件-preload.js 文件
checkComponentPreloaded: function () {
return new Promise((resolve, reject) => {
try {
sap.ui.require(["com/your/namespace/Component-preload"], (CP) => {
resolve();
});
} catch (e) {
reject();
}
});
}
然后在其他地方(例如 Component.js 的初始化)你可以处理承诺并做一些事情(可能在 config/view 模型中设置一些 属性):
this.checkComponentPreloaded()
.then(() => { Log.error("Preloaded"); })
.catch(() => { Log.error("Not preloaded"); });
小问题:如果组件预加载可用但为空,它仍会告诉您它已预加载。
我正在 SAPUI5/OpenUI5 中寻找一种方法来确定 Component-preload.js
是否已加载或原始控制器和视图是否已加载。
到目前为止...
- 我试图通过访问全局 JS 对象 my.namespace.controller、my.namespace.Component 等来利用我的项目的命名空间,并试图找出加载
Component-preload.js
与未加载时的差异已加载。 - 我尝试使用 $.sap.getAllDeclaredModules() 并查看加载与未加载时的差异。
- 我试图从我的 SAPUI5 代码中捕获
Component-preload.js
的 onload 事件,但我发现没有可靠的方法在加载发生之前附加我的事件处理程序。 - 我试图将一个虚拟控制器编译到我的
Component-preload.js
中,但它并没有真正在项目中使用。但是我没有找到一种方法来在加载Component-preload.js
与未加载时的状态之间产生任何差异。
我显然运行没主意了。
不确定这是否是最优的,但我想出了一个小而简单的解决方案:
以下函数尝试加载组件-preload.js 文件
checkComponentPreloaded: function () {
return new Promise((resolve, reject) => {
try {
sap.ui.require(["com/your/namespace/Component-preload"], (CP) => {
resolve();
});
} catch (e) {
reject();
}
});
}
然后在其他地方(例如 Component.js 的初始化)你可以处理承诺并做一些事情(可能在 config/view 模型中设置一些 属性):
this.checkComponentPreloaded()
.then(() => { Log.error("Preloaded"); })
.catch(() => { Log.error("Not preloaded"); });
小问题:如果组件预加载可用但为空,它仍会告诉您它已预加载。