jqGrid使用requireJS - 网格加载但不起作用

时间:2015-04-02 10:32:12

标签: javascript jquery jqgrid requirejs

我通过requireJS将数据加载到jqGrid中,数据加载,格式化和显示,但之后没有任何工作,排序,行选择,分页等。如果我在没有requireJS的情况下启动jqGrid,网格工作正常。

RequireJS config snippet:

"jqGrid": "jqGrid/jquery.jqGrid.min",
"grid-locale": "jqGrid/i18n/grid.locale-en", ...
shim: {
  "jqGrid": ["grid-locale", "jquery-ui"]
}

JavaScript代码段:

define(["jquery", "httpUtils", "jqGrid"],
function ($, httpUtils, jqGrid) {
    window.jqGrid = jqGrid;

    var myViewModel = function () {
        var data = httpUtils.httpSyncGet('xxx');
        var grid = $('#index').jqGrid({
            colNames: ['ClientIdentifier'],
            colModel: [
                { name: 'ClientIdentifier', width: "150pt" }
            ],
            datastr: data,
            datatype: 'jsonstring',
            rowNum: 25,
            rownumbers: true,
            height: 500,
            viewrecords: true,
            width: 1100,
            shrinkToFit: false
        });
    };

    return myViewModel;
});

很抱歉,如果代码不是很全面,我不得不从大型项目中取出代码段。我只是好奇是什么原因导致jqGrid完成加载,但不知何故“卸载”#39;所有这些功能。控制台中也没有javascript错误。

1 个答案:

答案 0 :(得分:0)

我认为你错过了一些模块和依赖项。这对我有用(并且也从一个更大的项目中删除):

require.config({
    baseUrl: "Scripts/TypeScript",
    paths: {
        jquerygrid: "../jquery.jqGrid.src",
        jqueryui: "../jquery-ui-1.11.4",
        jqgridlocale: "../i18n/grid.locale-en",
        jqgrid: "../jquery.jqGrid.min"
    },
    shim: {
        jqueryui: {
            deps: ["jquery"]
        },
        uigrid: {
            deps: ["jqueryui"]
        },
        jqgrid: {
            deps: ['jqueryui', 'jqgridlocale']
        },
        jqgridlocale: {
            deps: ['jqueryui']
        }
    }
});

我从这个答案改编了上面的代码:requirejs jquery multiple dependent non module jquery plugins like jquery-ui and jqGrid,它解决了一个更复杂的场景,但我也对你有用。