对象未在CRM 2011中使用JavaScript的模块模式创建
我已经按照CRM 2011表单的模块模式设计了JavaScript逻辑。在加载表单时,有时我会收到“Crm对象未定义”的警报,但在刷新(单个或多个)后,此错误消失(工作顺利) 经过一番挣扎之后,我仍然无法理解为什么会发生这种情况。这和模块模式有关吗?因为对象未在CRM 2011中使用JavaScript的模块模式创建,javascript,jquery,dynamics-crm-2011,dynamics-crm,module-pattern,Javascript,Jquery,Dynamics Crm 2011,Dynamics Crm,Module Pattern,我已经按照CRM 2011表单的模块模式设计了JavaScript逻辑。在加载表单时,有时我会收到“Crm对象未定义”的警报,但在刷新(单个或多个)后,此错误消失(工作顺利) 经过一番挣扎之后,我仍然无法理解为什么会发生这种情况。这和模块模式有关吗?因为onLoad函数启动得很好,但困扰我的是为什么有时候Crm对象没有创建 var Crm = (function (FSX) { var xrm = { date: { setDate: functi
onLoad
函数启动得很好,但困扰我的是为什么有时候Crm
对象没有创建
var Crm = (function (FSX) {
var xrm = {
date: {
setDate: function (sourceAttribute, targetAttribute) {
// ... date setting logic ...
}
}
}
return xrm.date;
}(FSX));
function onLoad() {
if (typeof Crm === 'undefined') {
alert('Crm object undefined');
return;
}
Crm.setDate("fsx_source", "fsx_target");
}
我认为问题在于FSX对象。 这是在哪里装的 如果在定义模块的脚本执行之前尚未加载,则代码将出错,Crm将未定义 有一篇写得很好的文章是关于为CRM表单加载依赖库的 它提出了一些解决方案: 1) 使用RequireJs或HeadJs动态加载依赖脚本。
2) 通过在功能区命令中包含库来加载库。FSX正在加载在此文件之前的另一个脚本文件中创建库。如何可能不创建FSX?你是说JavaScript也会表现异常?它不是JavaScript。这与CRM如何加载脚本有关。脚本是异步加载的。上述代码可以在FSX完全加载之前运行。尝试在功能区中加载FSX脚本。功能区脚本是第一个加载的,希望您的脚本在创建FSX后运行。我上面提到的这篇文章有关于如何做到这一点的信息。是的,这是一篇有用的文章。