ExtJS — DWR прокси с хранилищем json?

#javascript #ajax #json #extjs #dwr

#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
});
  

Комментарии:

1. Можете ли вы опубликовать данные json, которые вы получаете после загрузки хранилища?

Ответ №1:

Используйте DWR3 с JSONP включенным, и вам не понадобится прокси.

Ответ №2:

Вам определенно нужно включить поля в программу чтения, но я не понимаю, почему там пустые строки. Я почти уверен, что мы не получаем никаких пустых записей — возможно, 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 }
})