0

私はSenchaについてStore ここで読んでいます

2 つの用語には、一意の名前/ID が必要です。なぜ両方が必要なのですか?userClassNameの値を使用しないのはなぜstoreidですか?

4

1 に答える 1

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

また、userClassName は ExtJS には存在しません。Sencha Architect が、ユーザーが必要とする className を識別するためにのみ使用します。

于 2013-09-12T04:07:48.427 に答える