我正在使用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。 那么如何获得商店的一件商品? 非常感谢你!
答案 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文档以获取更多信息。