1

我只是在 extjs 6.0.2 应用程序的现代区域创建一个简单的列表示例,我创建了模型、商店和视图。将商店分配给列表组件后,它在视图中对我没有任何显示,但是我遵循了 Sencha 文档的说明。

模型 => Task.js

Ext.define('NewsApp.model.Task', {
extend: 'Ext.data.Model',
xtype:'Task',

fields: [
    { name: 'label',     type: 'string' },
    { name: 'done',      type: 'boolean', defaultValue:false }
]});

商店 => Tasks.js

Ext.define('NewsApp.store.Tasks', {
extend: 'Ext.data.Store',

requires:[
    'NewsApp.model.Task'
],

alias: 'store.tasks',

model: 'NewsApp.model.Task',

data : [
    {label: 'Make the bed'},
    {label: 'Go to Masjed'},
    {label: 'Take out the trash'},
    {label: 'Take Kids out'},
    {label: 'Go shopping'}
]});

查看 => about.js

Ext.define('NewsApp.view.about.About', {
extend: 'Ext.Panel',

requires: [
    'NewsApp.view.about.AboutController',
    'NewsApp.store.MobileOS',
    'Ext.dataview.List',
    'NewsApp.store.Tasks'
],
xtype: 'About',
controller: 'about',
fullscreen: true,
layout: 'vbox',
items: [
    {
        xtype: 'list',
        itemTpl: '<div class="todo-item">{label}</div>',
        store: 'NewsApp.store.Tasks',
        items: []
    }
]});

我还注意到运行时控制台中的警告告诉我

[WARN] 找不到指定的商店

我确信我在列表配置中正确地写了商店名称。

4

3 回答 3

2

存储配置不能是字符串(类名),您应该创建它:

// ...
xtype: 'list',
store: Ext.create('NewsApp.store.Tasks'),
// ...
于 2016-08-25T15:49:02.173 回答
1

您做错的第一件事是调用 store by NewsApp.store.Tasks。这是不允许的,导致您出现错误。有很多方法可以实现网格存储。我建议的一种方法是使用 ID 调用。为您的商店分配 ID。

Store :

Ext.define('NewsApp.store.Tasks', {
extend: 'Ext.data.Store',

requires:[
   'NewsApp.model.Task'
] ,

alias: 'store.tasks',

model: 'NewsApp.model.Task',
id : 'NewTask',

 data : [
  {label: 'Make the bed'},
  {label: 'Go to Masjed'},
  {label: 'Take out the trash'},
  {label: 'Take Kids out'},
  {label: 'Go shopping'}
  ]});

然后你在网格中使用这个 ID 读取存储。

store : NewTask

请阅读此链接以更好地理解。这将帮助您准确地设计代码。别名

欢迎任何建议。

于 2016-08-26T05:26:42.063 回答
0

商店加载了吗?你在使用 ViewModel 吗?如果是这样,在您的视图模型中,您可以设置商店:

stores: {
    task: {
        //Store reference
        type: 'tasks',

        //Auto load
        autoLoad: true
    }
}

在这种方法中,您甚至可以将您的商店绑定到视图:

bind: {store: 'task'}
于 2017-03-03T08:27:47.693 回答