我在从另一个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
我已经尝试了一切,但似乎没有任何效果。
答案 0 :(得分:0)
从顶部的common.js
开始然后以ap_ItemFormBase.js
形式注册JS文件的方式应该起作用。但是产品团队在诸如懒惰脚本加载/并行脚本加载之类的脚本文件上几乎没有提高性能。这有点棘手,而且现代脚本在UUI和Web等不同客户端之间是混乱的。
Like explained in blog post,如果您将必备的js设置为依赖项,它将在加载到依赖文件中之前加载。
从解决方案(而非“表单属性”)中打开ap_ItemFormBase.js
Web资源,转到依赖项标签并添加common.js
。这样可以确保在使用引用之前文件已准备就绪。