0

我有一个当前使用 JQGrid 的 Web 应用程序,但我正在尝试引入 Backbone.js 来改进代码组织。我想要做的是使用集合从服务器获取数据,然后将 JSON 信息添加到我定义的 JQGrid 中,但我无法让它工作。我的 JQGrid 是这样定义的:

var tareasHumanasTable = $("#grillaTH").jqGrid({
        datatype: 'local',
        height: 'auto',
        colNames:[ colNames...],
        colModel:[ colModel...]
}

我的模型和集合是这样定义的:

window.TareaHumana = Backbone.Model.extend();

window.TareaHumanaCollection = Backbone.Collection.extend({
    model:  TareaHumana,
    url: "bandejaTareas/buscarTH"
});

我有一个按钮,单击该按钮可启动服务器通信。现在正在这样做:

$(function(){
    $("#botonBuscar").bind('click',function(){
        var tareaHumanaList = new TareaHumanaCollection();
        tareaHumanaList.fetch({data: $("#formBandejaTareas").serializeObject()});
        //alert("tareaHumanaList.toJSON(): " + tareaHumanaList.toJSON());
        tareaHumanaList.each(function(tareaHumana, i){
            //alert("tareaHumana.toJSON(): " + tareaHumana.toJSON());
            tareasHumanasTable.jqGrid('addRowData', (i + 1), tareaHumana.toJSON());
        });

该代码根本不起作用。使用 Firebug,我验证了服务器以正确的格式发送数据,但代码不起作用。最奇怪的是,当我取消注释“alert(...)”行时,一切都开始工作了。

4

2 回答 2

1

关键是fetch异步的。因此,如果您在它each之后立即调用,fetch您的集合可能不会被填充。你应该使用success回调。例如看看这个答案

于 2012-06-09T00:53:16.513 回答
0

尝试使用 datatype:jsonstring 并在集合上创建一个格式函数以向 jqgrid 提供正确的数据格式。

于 2012-06-09T12:52:30.583 回答