为什么商店中不是autoLoad的商品数量为0?

时间:2013-02-28 08:52:11

标签: extjs extjs4.1

我正在使用ExtJs 4.1。

我有这样的商店:

var predictTargetStore = new Ext.create('Ext.data.Store',{
    autoLoad : false,
    fields: ['label','value'],
    proxy : {
        type : 'ajax',
        reader : {
            type : 'json',
            root : 'predictTargetList'
        }
    }
});

我将在一段时间后做预测目标。负载({url:'getPredictTargetList.action'})。在我完成此操作之后,使用predictTargetStore的组合框将有选择。 但是当我试图从商店买到一件商品时,我失败了。我喜欢这样:

predictTargetStore.load({
    url : 'getPredictTargetList.action'
});
var value = predictTargetStore.getAt(0).get('value');

我发现predictTargetStore.getAt(0)为null,predictTargetStore.getCount()为0。 那么如何获得商店的一件商品? 非常感谢你!

4 个答案:

答案 0 :(得分:1)

等待服务器响应:

predictTargetStore.load({
    url : 'getPredictTargetList.action',
    callback: function () {
        var value = predictTargetStore.getAt(0).get('value');
    }
});

有关callback函数here的详细信息。

答案 1 :(得分:1)

我试过,下面会做的伎俩:

user.load({
    scope: this,

    callback: function(records, operation, success) {
    user.each(function(record) {
        console.log(record.get('name'));
    });
    }
});

答案 2 :(得分:0)

我遇到了以下代码的类似问题: `

Ext.define('MyApp.model.EOrder.Model.TestRequest', {
    extend : 'Ext.data.Model',
    fields : [{
            name : 'testId',
            type : 'int'
        }, {
            name : 'testCode'
        }, {
            name : 'testName'
        }, {
            name : 'price',
            type : 'float'
        }
    ]
});

var testStagingStore = Ext.create('Ext.data.Store', {
        model : 'MyApp.model.EOrder.Model.TestRequest',
        storeId : 'StagingTestRequest',
        autoLoad : false,
        proxy : {
            type : 'ajax',
            url : 'LOINC.json',
            reader : {
                type : 'json',
                root : 'TestRequest'
            }
        },
        listeners : {
            load : function () {
                loadedCount = this.data.getCount();
                console.log('json file loaded. processed records:' + loadedCount);
            }
        }
    });

testStagingStore.load();

console.log(testStagingStore.data.items);    // in chrome "network" console, I know my json file was loaded successfully. But here I get nothing!

`

不确定数据属性是否已正确填充。

我相信你有同样的问题,因为getAt将从data属性中检索记录。

答案 3 :(得分:-1)

我认为您需要在代理中提及url,或者您需要使用商店上的setProxy()方法来设置网址。完成此操作后,可能无法返回值。查看sencha文档以获取更多信息。