如何将ViewModel Store绑定到View?

Dav*_* L. 7 javascript extjs mvvm extjs6

我是一个非常新的Ext JS,并尝试在一个Panel中嵌入一​​个MultiSelect.

ViewModel有一个stores属性,你可以在这里看到:

Ext.define('TEST.view.controls.search.SearchFilterModel', {
    extend: 'Ext.app.ViewModel',
    alias: 'viewmodel.filter',
    data: {
        title: ''
    },
    stores: {
        test: {
            fields: ['id', 'name'],
            proxy: {
                type: 'ajax',
                url: 'api/test',
                reader: 'array'
            },
            autoLoad: true
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

我想在我View这样绑定:

viewModel: {
    type: 'filter'
},


layout: 'fit',
border: 1,
plain: true,
scrollable: 'y',
layout: 'fit',


bind: {
    title: '{title}',
},


items: {
    xtype: 'multiselect',
    scrollable: false,
    allowBlank: true,
    ddReorder: true,
    bind: {
        store: '{test}'
    },
    valueField: 'id',
    displayField: 'name'
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,store最终结束,null并且没有数据被加载到窗口小部件中.如果我只是在视图中对其进行硬编码,而不是绑定商店,那么它可以工作.

有谁看到问题是什么?

CD.*_*D.. 6

除了绑定商店之外,您还可以将空对象作为商店传递,这样就initComponent可以工作,例如:

{
    xtype: 'multiselect',
    fieldLabel: 'Multiselect',
    store: {},
    bind: {
        store: '{test}'
    },
    valueField: 'id',
    displayField: 'name'
}
Run Code Online (Sandbox Code Playgroud)

工作示例:https://fiddle.sencha.com/#fiddle/ur8