List在MVC下显示store数据的问题

如果采用MVC模式定义了Store和对应的model,分别为:

Ext.define('hcx.store.ContactStore',{ 
  extend : 'Ext.data.Store',
  xtype  : 'hStore',
  requires : ['hcx.model.Contact'],

  config: {
    model : 'hcx.model.Contact',
    sorters : 'lastName',
    grouper : {
      groupFn : function(record){
          return record.get('lastName')[0];
          }
        },
    data : [
       { firstName: 'Tommy',   lastName: 'Maintz'  },
       { firstName: 'Rob',     lastName: 'Dougan'  },
       { firstName: 'Ed',      lastName: 'Spencer' },
       { firstName: 'Jamie',   lastName: 'Avins'   }
              ]
}});

View Code 

Ext.define('hcx.model.Contact',{
extend : 'Ext.data.Model',
xtype : 'hContact',

config : {
 fields: ['firstName', 'lastName']
 }        

});

如果参照官方文档的例子,很容易会得出以下写法的List定义

Ext.define('hcx.view.Member',{
  extend : 'Ext.dataview.List' ,
  fullscreen: true,
  requires : ['hcx.store.ContactStore'],

  config : {
     title : 'memCard',
    itemTpl:  '<div class="contact">{firstName} <strong>{lastName}</strong></div>',
    store : 'hcx.store.ContactStore'
       grouped : true}
});

这样就会出现The specified Store cannot be found 的警告。并且store中的数据并没有显示到页面上。

这是因为我们在store的引用中使用了: store : 'hcx.store.ContactStore'

hcx.store.ContactStore仅仅是store的类名,我们并没有指定任何具体的store,所以会出现这个警告。

我觉得奇怪的反而是,这个不应该是一个警告,应该升级为一个错误可能会更加适合。

所以我们需要修改为:

  store : {xtype : 'hStore'}


这里使用xtype对store进行动态加载,也就是说创建了具体的store放入list中进行显示

作者:Ever
原文:http://www.cnblogs.com/evermaze/archive/2013/03/17/listwarn.html