Sencha Touch 2商店不会在浮动面板内加载

时间:2013-12-16 04:05:05

标签: sencha-touch-2 store

我正在尝试在浮动面板中加载列表。它适用于静态值,但不使用json文件加载。

如果我尝试了这个并且它有效:

var panel = Ext.create('Ext.Panel', {
left: 0,
padding: 10,
width: 300,
height: 300,
modal: true,
hideOnMaskTap: true,
layout: 'fit',
items: [
    {
        xtype: 'list',
        scrollable: true,
        ui: 'round',
        height: '100%',
        store: {
            fields: ['name'],
            data: [
                {name: 'Cowper'},
                {name: 'Everett'},
                {name: 'University'},
                {name: 'Forest'}
            ]
        },
        itemTpl: '{name}'
    }
]
});

但是当我尝试调用Json文件时,它不起作用。这是小组:

var panel = Ext.create('Ext.Panel', {
left: 0,
padding: 10,
width: 300,
height: 300,
modal: true,
hideOnMaskTap: true,
layout: 'fit',
items: [
    {
        xtype: 'list',
        scrollable: true,
        ui: 'round',
        height: '100%',
        store: 'storeCardStatus',
        itemTpl: '{Card_Status}'
    }
]
});

这是商店:

Ext.define('MyApp.store.storeCardStatus',{
extend: 'Ext.data.Store',
config: {
    model: 'MyApp.model.modelCardStatus',
    autoLoad: true,

    proxy: {
        type: 'ajax',
        url : 'card_status.json',
        reader: 'json'
    }
}
});

这是模型:

Ext.define('MyApp.model.modelCardStatus', {
extend: 'Ext.data.Model',
config: {
    fields: [
        {name: 'Card_Status', type: 'string'}
    ]
}
});

这是Json文件:

[
{"Card_Status": "Completed"},
{"Card_Status": "Issued"},
{"Card_Status": "In Use"}
]

1 个答案:

答案 0 :(得分:0)

这与本地数据与JSON文件无关。您只是没有在列表视图上正确设置预定义存储。您希望向商店定义添加别名,并将商店定义为商店别名 type 的对象(减去前缀)。这是一个小提琴:

https://fiddle.sencha.com/#fiddle/2bh
(具体看第3行和第45行)

我建议总是通过这样的别名创建商店,它更容易管理和销毁,并且每个创建的商店将始终是一个新实例。提前创建商店(例如,通过Ext.create)然后将它们分配给组件会带来很大的风险,即无意中将同一商店绑定到2个以上的数据视图。