gpt4 book ai didi

javascript - D365 从另一个 JS 调用函数时出错

转载 作者:行者123 更新时间:2023-11-30 06:25:11 26 4
gpt4 key购买 nike

我在从另一个 JS 文件调用 JS 函数时遇到问题。

定义函数的主要 JS。

var Common = Common || {};
Common.BaseAction = Common.BaseAction || {};

Common.BaseAction.SetNotification = function (message, level, uniqueId)
{
Xrm.Page.ui.setFormNotification(message, level, uniqueId);
}

Common.BaseAction.clearNotification = function (uniqueId) {
Xrm.Page.ui.clearFormNotification(uniqueId);
}

我调用函数的 JS

var apItem = apItem || {};
apItem.BaseForm = apItem.BaseForm || {};

apItem.BaseForm.SetName = function ()
{
var bookName = Xrm.Page.getAttribute("ap_bookid").getValue()[0].name;
var condition = Xrm.Page.getAttribute("ap_condition").getText();

if (bookName !== null && condition !== null) {
Xrm.Page.getAttribute("ap_name").setValue(bookName + " - " + condition);
}
}

apItem.BaseForm.CountOverDueBy = function() {
var rentedTill = Xrm.Page.getAttribute("ap_rented_till").getValue();
var nowD = Date.now();

if (rentedTill !== null) {
var overdueBy = parseInt((Date.now() - rentedTill) / 86400000);

if (overdueBy > 0) {
Xrm.Page.getAttribute("ap_overdue_by").setValue(overdueBy);
Common.BaseAction.SetNotification("Book is Overdue by " + overdueBy
+ " Days.", "WARNING", "OverDueWarning");
}
else {
Xrm.Page.getAttribute("ap_overdue_by").setValue(null);
Common.BaseAction.clearNotification("OverDueWarning");
}
}
}

在实体的表单中,我添加了上面两个文件,其中 common.js 位于顶部,并且我正在调用函数 apItem.BaseForm.CountOverDueBy 的事件处理程序

保存 + 发布和 Ctrl + F5 给出以下错误

ReferenceError: Common is not defined
at Object.apItem.BaseForm.CountOverDueBy (https://<domain>/%7B636651014350000438%7D/WebResources/ap_ItemFormBase.js?ver=2091450722:24:13)
at eval (eval at RunHandlerInternal (https://<domain>/form/ClientApiWrapper.aspx?ver=2091450722:153:1), <anonymous>:1:17)
at RunHandlerInternal (https://<domain>/form/ClientApiWrapper.aspx?ver=2091450722:159:1)
at RunHandlers (https://<domain>/form/ClientApiWrapper.aspx?ver=2091450722:118:1)
at OnScriptTagLoaded (https://<domain>/form/ClientApiWrapper.aspx?ver=2091450722:233:1)
at https://<domain>/form/ClientApiWrapper.aspx?ver=2091450722:202:1

我已经尝试了一切,但似乎没有任何效果。

最佳答案

在表单中注册 JS 文件的方式,从顶部的 common.js 开始,然后是 ap_ItemFormBase.js 应该可行。但是产品团队对脚本文件的性能改进很少,例如延迟脚本加载/并行脚本加载。这有点棘手,现代脚本在 UUI 和 Web 等不同客户端之间很困惑。

Like explained in blog post ,如果您将先决条件 js 设置为依赖项,它将在您在依赖文件中使用它之前加载。

从解决方案(而不是从表单属性)打开 ap_ItemFormBase.js Web 资源,转到 Dependencies 选项卡并添加 common.js .这将确保文件在使用引用之前准备就绪。

关于javascript - D365 从另一个 JS 调用函数时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50953006/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com