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