Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
对象未在CRM 2011中使用JavaScript的模块模式创建_Javascript_Jquery_Dynamics Crm 2011_Dynamics Crm_Module Pattern - Fatal编程技术网

对象未在CRM 2011中使用JavaScript的模块模式创建

对象未在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

我已经按照CRM 2011表单的模块模式设计了JavaScript逻辑。在加载表单时,有时我会收到“Crm对象未定义”的警报,但在刷新(单个或多个)后,此错误消失(工作顺利)

经过一番挣扎之后,我仍然无法理解为什么会发生这种情况。这和模块模式有关吗?因为
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后运行。我上面提到的这篇文章有关于如何做到这一点的信息。是的,这是一篇有用的文章。