javascript - D365 CE Online - 全局执行上下文
问题描述
在为 D365 CE(在线)更新我们所有的 javascript 文件时,我注意到我们有许多 JS 文件没有从诸如 OnSave、OnLoad 或 OnChange 之类的表单事件中调用。这些文件仅由其他 JS 库从内部引用中调用。
由于没有在表单事件上调用这些文件,因此我必须在调用函数时传递执行上下文。(我们不喜欢这样做,因为我们不知道有多少其他 JS 库正在调用这些函数。目前只有 1 个解决方案是这个 sprint 的一部分)
我的问题是,如果我有一个首先加载到表单上的 JS 库,并且如果这个文件有一个全局执行上下文,我可以在以下所有 JS 库中使用它吗?
例如: JSFile1- Function XYZ(eContext) - 运行表单的 OnLoad。(作为参数传递的执行上下文)
JSFile2 - 函数 ABC() - 不从任何表单事件调用,但需要执行上下文。
在 JSFile1 中,我声明了一个全局变量 eContext 并在 XYZ(eContext) 函数中对其进行了初始化。
然后我可以在我的 JSFile2 中以任何方式使用这个全局 eContext 变量吗?
解决方案
- 方法不正确 原因:最后,您将不得不在依赖 Js 中使用全局定义的表单上下文,因为您需要在依赖 Js 中有此上下文来执行一些编码/事务
- 由于您已经处于重构过程中,为什么不将此上下文作为参数传递给您的其他 js,以便您拥有此上下文来进行事务。
您还必须注意表单上 Js 的顺序,即获取上下文的 Js 应该是第一个加载的。IE
JSFile1- 函数 XYZ(eContext)
SFile2 - 函数 ABC(eContext)
推荐阅读
- socket.io - 当 navigator.online 更改为 true 时如何告诉 socket.io 立即重新连接
- php - Slim REST API 从数据库和图像文件中删除记录
- c++ - 使用 Windows API 枚举端口时如何获取扩展端口信息
- javascript - TypeScript 编译错误:Array.map(callback) 表达式不可调用
- php - 尝试使用控制器方法删除文件夹时如何调试 AJAX 响应中的错误?
- html - 元素按钮不能作为a元素的后代出现如何解决
- java - 在调度程序 servlet 中添加通配符以映射 URI
- c# - 如何知道被点击的Bot框架中Action.OpenUrl的url?
- r - NormalizeData.default 在 R 中的集成 seurat 对象上运行 DoubletFinder 时出错
- r - 如何用r计算日期差