ViewModel 中的 Extjs 链式存储到 GlobalStore

Extjs Chained store to GlobalStore in ViewModel

我想使用链接到全局商店的商店, 但在启动后我给出了 js 警告:

Ext.data.Store created with no model

我看不到任何数据。

这是我的代码:

全局用户存储

Ext.define('App.store.UserStore',{
extend      : 'App.store.AjaxReadyStore',
requires    : ['App.model.UserModel'],
model       : 'App.model.UserModel',
autoLoad    : false,
id          : 'UserStore',
alias       : 'store.UserStore',


constructor : function() {
    this.callParent(arguments);
    this.proxy.api= {
        create  : 'api/v1/users',
        read    : 'api/v1/users',
        update  : 'api/v1/users',
        destroy : 'api/v1/users'
    };
    this.readAndLoad();
}
});

ViewModel

Ext.define('App.view.tasktemplate.TaskTemplateModel', {
    extend  : 'Ext.app.ViewModel',
    alias   : 'viewmodel.tasktemplate',
    stores : {
        owner: {
            source  : 'UserStore'
        }
    }
});

查看

Ext.define('App.view.tasktemplate.TaskTemplateOwnerList',{
    extend  : 'App.view.pool.grid.GridWithAction',
    xtype   : 'tasktemplateownerlist',
    store: {
        bind : '{owner}'
    },
});

将您的视图代码更改为此 -

Ext.define('App.view.tasktemplate.TaskTemplateOwnerList',{
        extend  : 'App.view.pool.grid.GridWithAction',
        xtype   : 'tasktemplateownerlist',
        bind: {
            store : '{owner}'
        }
    });

商店绑定:

bind: {
     store : '{owner}'
}

当你这样做的时候真的很有趣

store: {
        bind : '{owner}'
    }

在您的视图中 - StoreManager 使用商店配置的值进行查找,通常需要一个字符串或字符串数​​组(商店名称),但它发现它不是一个字符串而是一个对象,因此它创建了一个实例'Ext.data.Store' 将 {bind:'{owner}'} 作为配置传递 -> 所以您实际上得到了一个没有关联模型的 Store class 实例。 商店: