`storeid`和`userClassName`有什么区别?

时间:2013-09-12 02:10:46

标签: extjs model store

我正在阅读Sencha的Store here

这两个术语需要唯一的名称/ ID。为什么我们都需要它们?为什么不使用userClassName的{​​{1}}值?

1 个答案:

答案 0 :(得分:1)

定义商店的代码是:

/**
 */
Ext.define('MyApp.store.Wallpaper', {
    extend: 'Ext.data.DirectStore',
    requires: [
        'MyModel'
    ],
    model: 'MyModel',
    constructor: function () {
        var me = this;
        var cfg = {
            storeId: 'wallpapersStore',
            proxy: {
                type: 'direct',
                directFn: mydirFn,
                reader: {
                    type: 'json',
                    root: 'wallpapers'
                }
            }
        };
        me.callParent([cfg]);
        return me;
    }
});

在这个定义中,userClassName实际上是:“MyApp.store.Wallpaper”并用于

var instance1 = Ext.create('MyApp.store.Wallpaper');

虽然storeId用于全局商店实例:

var instance2 = Ext.getStore('wallpapersStore'); //instance1 === instance2
var instance3 = Ext.getStore('wallpapersStore'); //instance1 === instance2 === instance3
var instance4 = Ext.create('MyApp.store.Wallpaper'); //this generates an error because of the conflicting storeId's

此外,ExtJS中不存在userClassName,它仅由Sencha Architect用于识别用户想要的className;