如何在Sencha Touch中搜索商店

时间:2014-01-01 21:16:15

标签: extjs

我可能做错了什么;当我搜索商店时,我只得到-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);

1 个答案:

答案 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的数据,然后获取它们的组件来设置项目。