0

現在JQGridを使用しているWebアプリケーションがありますが、コード編成を改善するためにBackbone.jsを導入しようとしています。私がやろうとしているのは、コレクションを使用してサーバーからデータを取得し、定義されたJQGridにJSON情報を追加することですが、それを機能させることができません。私の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が非同期であるということです。したがって、その直後に電話をかけるとeachfetchコレクションにデータが入力されない可能性があります。コールバックを使用する必要がありsuccessます。たとえば、この回答を見てください。

于 2012-06-09T00:53:16.513 に答える
0

datatype:jsonstringを使用し、コレクションにformat関数を作成して、jqgridにcorectデータ形式を提供してみてください。

于 2012-06-09T12:52:30.583 に答える