部署时未定义Javascript公共命名空间函数

时间:2015-08-20 17:24:15

标签: javascript javascript-namespaces

我有下面的脚本,我正在分配给公共Javascript名称空间。它们在本地工作正常,我可以调用<db:mysql-config name="MySQL_Configuration" host="localhost" port="" user="" database="test" pass="" doc:name="MySQL Configuration" /> <flow name="flows1Flow1"> <poll doc:name="Poll"> <db:select config-ref="MySQL_Configuration" doc:name="Database"> <db:parameterized-query><![CDATA[SELECT * FROM test.people]]></db:parameterized-query> </db:select> </poll> <json:object-to-json-transformer doc:name="Object to JSON" /> <logger level="ERROR" message="#[payload]" doc:name="Logger" /> <file:outbound-endpoint path="./people" doc:name="File" responseTimeout="10000" /> </flow> 并且所有行为都符合预期,但是当我将它们部署到我的远程服务器时,我在Chrome / Firefox控制台中收到以下错误; 未捕获的TypeError:TEST.loading不是函数

我无法弄清楚它为什么会在本地工作而不是远程工作。我不认为这会有任何区别,但我使用MVC捆绑包来部署脚本,我已经检查了Chrome的网络输出,并且脚本正在正常加载,我可以看到里面的代码....任何建议?

TEST.loading(true)

1 个答案:

答案 0 :(得分:3)

当代码运行时,似乎TEST已经定义了一个真值,使得该代码成为无操作。

如果您想确保始终添加您的属性,无论它是否已经存在,这是通常的模式:

var TEST = (function(t) {
{
    t.dtFormat = "DD MMMM YYYY HH:mm";

    t.loading = function loading(showLoading) {
        if (showLoading) {
            if (Modernizr.cssanimations)
                $("#loadingAnimation").show();
            else
                $("#loadingStatic").show();
            $("#loadingContainer").show();
        }
        else {
            if (Modernizr.cssanimations)
                $("#loadingAnimation").hide();
            else
                $("#loadingStatic").hide();
            $("#loadingContainer").hide();
        }
    };

    return t;
})(TEST || {});

这样做的另一个好处是为您提供了私人功能的便利范围。

相关问题