Javascript命名空间未定义

时间:2014-06-17 17:51:37

标签: javascript namespaces undefined

所以我继承了一段代码,我正在寻找能帮助我了解正在发生的事情的人。所以我设置了一些名称空间,在其中我有一些功能。

我还有另一个javascript文件通过C.S.gridSetSearchFilter(foo,bar)引用这些函数,但是这个函数不能被这个aditional文件访问。它告诉我undefined不是一个函数。

这对我来说似乎很奇怪,因为我已经验证了主命名空间已经加载并初始化,但是第二个javascript文件似乎无法访问命名空间。关于我在哪里的任何想法?

jQuery(function ($) {
    // Check if namespace is defined
    if (typeof (C) === 'undefined') {
        var C = {};
    }

    // Check if namespace is defined
    if (typeof (C.S) === 'undefined') {
        C.S = {};
    }

    // Define the application namespace
    C.S = (function ($) {
        var _init = function () {
           //more init code here...
        }
            var _gridSetSearchFilter = function (gridId, gridPagingId) {
                $('#' + gridId).jqGrid('navGrid', '#' + gridPagingId, { edit: false, add: false, del: false },
                    {}, // use default settings for edit
                    {}, // use default settings for add
                    {}, // use default settings for delete
                    { multipleSearch: true, showQuery: true, width: 650, closeOnEscape: true, closeAfterSearch: true }, // enable the advanced searching
                    { closeOnEscape: true }
                );

                $('#' + gridId).jqGrid('filterToolbar', { stringResult: true, searchOnEnter: false, defaultSearch: 'cn' });
            };

            var _gridFluidResize = function (gridId, gridContainerId) {
                // Setup grid to have fluid width on window resize
                $(window).bind('resize', function () {
                    $('#' + gridId).setGridWidth($('#' + gridContainerId).width(), true);
                }).trigger('resize');
            };

            return {
                init: function () {
                    _init();
                },
                gridSetSearchFilter: function (gridId, gridPagingId) {
                    _gridSetSearchFilter(gridId, gridPagingId);
                },
                gridFluidResize: function (gridId, gridContainerId) {
                    _gridFluidResize(gridId, gridContainerId);
                }
    }

0 个答案:

没有答案