まず第一に、私はあなたに寛大であることをお願いします:私はただ貧弱なext-jsとjavascriptの初心者です...
私はext-jsの無限スクロールグリッドの例を自分のニーズに適応させようとしています。私はsenchaext-jsで次のストアを定義しました:
Ext.define('AM.store.M2MResources', {
extend: 'Ext.data.Store',
requires: 'Ext.direct.*', // use ext-direct for binding
model: 'AM.model.M2MResource',
autoLoad: true,
paramsAsHash:false,
autoSave: false,
pageSize: 25,
// allow the grid to interact with the paging scroller by buffering
buffered: true,
proxy: {
type: 'direct',
api: {
// create : undefined,
read : M2MResourceServlet.getM2Mresources,
// update : undefined,
// destroy : undefined
},
extraParams: {
total: 100
},
root: 'data',
fields: [{name:'label'}, {name:'address_unique'}, {name:'address_network'}, {name:'status'}],
paramOrder: 'page, start, limit',
reader: {
type: 'json',
root: 'data',
successProperty: 'success',
totalProperty: 'totalCount'
},
writer: new Ext.data.JsonWriter({
encode: false,
writeAllFields: true,
listful: true
}
)
}
});
このdirectJNgineサーバーの対応物で:
public class M2MResourceServlet {
public static class ResourceData{
public String label;
public String address_unique;
public String address_network;
public String status;
}
public static class DirectStoreResult{
ResourceData[] data;
public int totalCount;
public boolean success = true;
public DirectStoreResult(ResourceData[] data, int totalCount) {
super();
this.data = data;
this.totalCount = totalCount;
}
}
static int counter = 0;
@DirectMethod
public DirectStoreResult getM2Mresources( Integer page, Integer start, Integer limit ) {
ArrayList<ResourceData> result = new ArrayList<ResourceData>();
// fill result list...
DirectStoreResult r = new DirectStoreResult(result.toArray(new ResourceData []{}),limit);
return r;
}
}
次に、次のモデルを指定しました。
Ext.define('AM.model.M2MResource', {
extend: 'Ext.data.Model',
fields: [
{name:'label' },
{name:'address_unique' },
{name:'address_network' },
{name:'status' }
]
});
それで、次のグリッドにデータをロードしたいと思います。
Ext.define('AM.view.resgrid.M2MResources', {
extend: 'Ext.grid.Panel',
alias: 'widget.m2mresources',
title: 'All Resources Here',
verticalScrollerType: 'paginggridscroller',
store: 'M2MResources',
initComponent: function() {
console.log('initComponent function in View has been called...');
this.columns = [
{header: 'friendly name',dataIndex: 'label',flex: 1, sortable: true},
{header: 'address unique', dataIndex: 'address_unique',flex: 1},
{header: 'address network', dataIndex: 'address_network', flex: 1},
{header: 'node status',dataIndex: 'status',flex: 1}
];
this.callParent(arguments);
Ext.getStore('M2MResources').guaranteeRange(0, 100);
}
});
残念ながら、ストアはデータをロードしないようです。グリッドパネルには「ロード中...」の記号が表示され、データ項目は表示されません。問題は、私の直接メソッドによって返されたjsonにあると思われます。クライアント側次のjsonデータレコードを取得します。
この問題を解決する方法を提案していただけますか?ありがとうございました!