ExtJS - 使用json存储的DWR代理?

时间:2011-04-29 16:25:02

标签: javascript ajax json extjs dwr

我正在尝试使JsonStore使用一个带参数并异步执行的函数,但我不知道该怎么做。

myMethod需要callback,但如何将回调数据与JsonStore绑定?

store = new Ext.data.JsonStore({
    proxy: new Ext.data.DirectProxy(
    {
        directFn:(new function(){return MyDwrService.myMethod('test')}),
    }),
    autoLoad:true,...

我尝试使用DwrProxy实现,但现在当我没有将fields传递给JsonReader时,没有数据填充我的网格,当我做传递fields,创建一堆空行。是什么给了什么?

   store = new Ext.data.Store({
        proxy: new Ext.ux.data.DwrProxy({
            apiActionToHandlerMap:{
                read: {
                    dwrFunction: MyService.myMethod,
                    getDwrArgsFunction: function() {
                        return ["testUser"]
                    }
                }
            }
        }),
        reader: new Ext.data.JsonReader({fields:myFields}),
        autoLoad:true,
    fields:myFields,
    remoteSort:true
});

2 个答案:

答案 0 :(得分:0)

启用DWR3时使用JSONP,您将不需要代理。

答案 1 :(得分:0)

你肯定需要在阅读器中包含字段,但我不明白为什么有空行。我很确定我们没有得到任何空记录 - 也许allowBlank:false对它进行排序..如果它有用,这是我们的代码:

var myReader = new Ext.data.JsonReader({
    root : 'objectsToConvertToRecords',
    idProperty: 'id',
    fields : [
        {name: 'id', allowBlank:false},
        {name: 'foo', allowBlank:false},
        {name: 'bar', allowBlank:false}
    ]
});

var dwrProxy = new Ext.ux.data.DwrProxy({
    apiActionToHandlerMap : {
        read : {
            dwrFunction : RemoteClass.remoteReadMethod,
            getDwrArgsFunction: function(request, newData, oldData) {
                return [request.params.myId];
            }
        }
        create : {
            dwrFunction : RemoteClass.remoteCreateMethod,
            getDwrArgsFunction: function(request, newData, oldData) {
                return [newData];
            }
        }
        update : {
            dwrFunction : RemoteClass.remoteUpdateMethod,
            getDwrArgsFunction: function(request, newData, oldData) {
                return [newData];
            }
        }
        destroy : {
            dwrFunction : RemoteClass.remoteDestroyMethod
        }
    }
});

var store = new Ext.data.Store({
     proxy: dwrProxy,
    reader: myReader,
    writer : myWriter,
    autoLoad : true,
    autoSave: true,
    baseParams: { tiploc: this.tiploc }
})