我有以下代码,我通过传递name_holder值来创建商店并在加载时查询它。所以基本上查询将是
/query/name:name_holder*
用户输入name_holder值。现在我试图检索返回的记录值,但我无法在store.load函数之外访问它。 我的方法是否正确?我是ext.js的新手,任何帮助将不胜感激。谢谢。
var store = Ext.create("Ext.data.Store", {
fields: [
{name: 'name', type: 'string'},
{name: 'id', type: 'string'},
],
proxy : name_proxy,
});
var data_names= store.load({
params : {
query : name_holder
},
callback: function(records, operation, success) {
if (success) {
var data_id= records[0].data.id;
} else {
console.log('error');
}
}
});
console.log(data_id);
我可以访问函数内部的data_id值,但不能访问外部。因此console.log行给了我一个错误。
答案 0 :(得分:0)
如果实际任务是查找id
与给定字符串完全匹配的记录的name
,那么您不需要对商店大惊小怪。只需让服务器端API返回ID以响应/query/name:name_holder
之类的查询。只需实现一个AJAX请求即可获取ID。
如果由于某种原因需要坚持使用商店,那么最好的方法是让服务器端执行完全匹配,以便在请求/query/name:name_holder
时只返回一条记录。在这种情况下,您的商店在加载时只会有一条记录,您可以通过这种方式轻松找到id
:store.getAt(0).getId()
。
最后,如果您不能或不想触摸服务器端的任何内容,请使用query方法过滤掉您感兴趣的记录:
store.query(
'name',
name_holder,
false, // not anymatch
true, // case sensitive
true // exact match
).getAt(0).getId();