我可能做错了什么;当我搜索商店时,我只得到-1?
我的模特
Ext.define('app.model.Sections', {
extend: 'Ext.data.Model',
config: {
fields: [{
name: 'id',
type: 'int'
}, {
name: 'title',
type: 'string'
}, {
name: 'content',
type: 'string'
}]
}
});
我的商店
Ext.define('app.store.Sections', {
extend: 'Ext.data.TreeStore',
requires: [
'app.model.Sections'
],
config: {
autoLoad: true,
model: 'app.model.Sections',
proxy: {
type: 'ajax',
url: 'resources/data/data.json',
reader: {
type: 'json',
rootProperty: 'items'
}
}
}
});
json
文件就像这样
{
"items": [{
"id": "27",
"title": "Title 1",
"content": "",
"items": [{
"id": "85",
"title": "Title 2",
"content": "content 2",
"leaf": true
}, {
"id": "78",
"title": "Title 3",
"content": "content 3",
"leaf": true
}]
}, {
"id": "29",
"title": "Title 4",
"content": "",
"items": [{
"id": "97",
"title": "Title 5",
"content": "content 5",
"leaf": true
}, {
"id": "93",
"title": "Title 6",
"content": "content 6",
"leaf": true
}, {
"id": "105",
"title": "Title 7",
"content": "content 7",
"leaf": true
}]
}]
}
我能够获得商店并查看商店中的数据,但索引总是出现-1
var store = Ext.getStore('Sections');
var index = store.findExact('id', 85);
console.log(store);
console.log(index);
答案 0 :(得分:0)
我使用了carcel的建议来做store.on('load', function ());
。
我还将id
的数据类型更改为字符串,这样就不会产生混淆。
initialize: function() {
var sectionID = '85';
var store = Ext.getStore('Sections');
// search once the store is loaded
store.on('load', function() {
// get the node record
var record = store.getNodeById(sectionID);
if (record == null)
console.log('no record found');
else {
var parentPanel = Ext.getCmp('myabouttest');
parentPanel.setHtml(record.data.content);
var titlebar = Ext.getCmp('mytitilebar');
titlebar.setTitle(record.data.title);
}
}
});
}
初始化函数在加载存储之前完成,以便显示我必须为面板和标题指定ID的数据,然后获取它们的组件来设置项目。