如何将Backbone模型绑定到jqGrid?

时间:2011-12-27 16:02:25

标签: jquery jqgrid backbone.js

我正在使用Backbone以及jQuery和jqGrid,并遇到将主干集合与jqGrid绑定的问题。

这是我从服务器获得的响应:

{"DogModel":[
    {"name":"Jane","breed":"Great Dane"},
    {"name":"Rocky","breed":"golden Retriver"},
    {"name":"Jim","breed":"Lab"}
]}

在View中,我得到的数据如

[{"name":"Jane","breed":"Great Dane"},
{"name":"Rocky","breed":"golden Retriver"},
{"name":"Jim","breed":"Lab"}]

//视图中的jqGgrid代码

jQuery("#dogsList").jqGrid({ 
    datatype: 'json',
    data:this.collection.models.toJSON(),
    width:'100%',
    colNames:['name', 'breed'], 
    colModel:[  
        {name:'name', align:'left'},
        {name:'breed', align:'left'}
    ],
    loadComplete : function(data) {
        alert('grid loading completed ' + data);
    },
    loadError : function(xhr, status, error)  {
        alert('grid loading error' + error);
    }
});

我尝试用data:this.collection.models.toJSON()data:this.collection.models[0].toJSON()替换data:this.collection.toJSON(),它会引发意外的字符解析错误。

我需要做什么才能将模型绑定到jqGrid?

2 个答案:

答案 0 :(得分:2)

我不完全了解jqGrid,但我看了他们的例子,我找到了一个解决方案,可以在网格上添加模型。

您需要将datatype更改为local并手动添加jqGrid上的每一行。

最好的方法是看代码在jsFiddle上运行并了解代码的工作原理:http://jsfiddle.net/Atinux/qM98D/

答案 1 :(得分:1)

你应该尝试:

datatype: 'local',
data:this.collection.toJSON()

这适合我。