1

Ext 4.0.7 で Ext Store を読み込もうとしています。

AJAX 要求の成功コールバックでストアの loadRawData メソッドを呼び出すと、オブジェクトはこのプロパティまたはメソッドをサポートしていませんというエラーが返されます。

ここに私がロードしているデータがあります:

{
    "data": [
    {
        "id": 1,
        "source": "1445261",
        "target": "1437043",
        "sourceType": "user",
        "redirectUrl": "http://www.google.co.uk",
        "message": "this is a notification message",
        "targetType": "user",
        "messageType": "notification",
        "sentDate": "1354758001",
        "notificationType": "notification",
        "parameters": "null",
        "read": "false",
        "readDate": 1354758001
    }, 
    {
        "id": 2,
        "source": "1445261",
        "target": "1437043",
        "sourceType": "user",
        "redirectUrl": "http://www.google.co.uk",
        "message": "this is a notification message",
        "targetType": "user",
        "messageType": "notification",
        "sentDate": "1354758001",
        "notificationType": "notification",
        "parameters": "null",
        "read": "false",
        "readDate": 1354758001
    },  
    {
        "id": 3,
        "source": "1445261",
        "target": "1437043",
        "sourceType": "user",
        "redirectUrl": "http://www.google.co.uk",
        "message": "this is a notification message",
        "targetType": "user",
        "messageType": "notification",
        "sentDate": "1354758001",
        "notificationType": "notification",
        "parameters": "null",
        "read": "false",
        "readDate": 1354758001
    } 
    ]
}

これはストア コードと ajax リクエストです。

var infoStagingStore = Ext.create('Ext.data.Store', {
    model: 'SCB.RMWB.InfoBar.Model.Message',
    storeId: 'Staging',
    autoLoad: false,
    pageSize: 10,
    proxy: {
        type: 'pagingmemory',
        reader: {
            type: 'json',
            root: 'data'
        }
    },
    listeners: {
        load: function(){
            console.log('loaded');
        }
    }   
});

Ext.Ajax.request({
    url: '/rmwb/resources/js/app/infoBar/data/data.json',
    timeout: 60000,
    method: 'GET',
    scope: this,
    params: '',
    success: function(resp) {
        console.log(resp.responseText);
        var store = Ext.data.StoreManager.lookup('Staging');
        store.loadRawData(resp.responseText, true);
    },
    failure: function(resp, opts) {

    },
    callback: function(options, success, resp) {
    }
}); 

これがエラーを返す理由がよくわかりませんか?

4

2 に答える 2

3

と呼ばれる変数にストアを割り当てたのでinfoStagingStore、ajax 呼び出しでそのディレクトリを参照することはできませんか?

Ext.Ajax.request({
    url: '/rmwb/resources/js/app/infoBar/data/data.json',
    timeout: 60000,
    method: 'GET',
    scope: this,
    params: '',
    success: function(resp) {
        console.log(resp.responseText);
        //var store = Ext.data.StoreManager.lookup('Staging');
        infoStagingStore.loadRawData(resp.responseText, true);
    },
    ...
于 2012-12-17T09:14:15.517 に答える
3

私のコメントのように、ページングメモリ ストアは必要ありません。ページングストアはメモリ内のデータでページネーションを許可するためのものですが、要件を見てそれを使用する理由はないため、必要なのは ajax ストアです。

したがって、標準の ajax プロキシを使用する場合は、通常の方法 (.load() メソッドを使用) でロードできます。次に、サーバーからさらにレコードを追加する必要がある場合は、 addRecordsオプションを使用して load メソッドを再度呼び出すだけです。

例 (テストされていないサンプル):

// load store with historical data
infoStagingStore.load(); 

// load more records to the store from a different resource
infoStagingStore.load({
    url: '/rmwb/resources/js/app/infoBar/data/data.json',
    addRecords: true
});
于 2012-12-17T13:02:38.710 に答える