首页 > 解决方案 > 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 变量吗?

标签: javascriptdynamics-crm-onlineexecutioncontext

解决方案


  1. 方法不正确 原因:最后,您将不得不在依赖 Js 中使用全局定义的表单上下文,因为您需要在依赖 Js 中有此上下文来执行一些编码/事务
  2. 由于您已经处于重构过程中,为什么不将此上下文作为参数传递给您的其他 js,以便您拥有此上下文来进行事务。
  3. 您还必须注意表单上 Js 的顺序,即获取上下文的 Js 应该是第一个加载的。IE

    JSFile1- 函数 XYZ(eContext)

    SFile2 - 函数 ABC(eContext)


推荐阅读