2

对不起,如果标题不是最好的。

我在 Extjs 6 中粗略地编写了一个测试项目。我有一个 viewmodel 类,它使用了一个名为customers

Ext.define('ChildSessionBinding.view.main.ChildSessionModel',{
    extend: 'Ext.app.ViewModel',
    alias: 'viewmodel.binding.childsession',

    requires:[
        'Ext.data.Store',
        'ChildSessionBinding.model.Customer'
    ],

    stores:{
        customers:{
            model: 'ChildSessionBinding.model.Customer',
            autoLoad: true,
            session: true
        }
    }
});

它需要的模型中有硬编码的测试数据:

Ext.define('ChildSessionBinding.model.Customer', {
    extend: 'Ext.data.Model',

    fields: [
        { name: 'name', type: 'auto' },
        { name: 'phone', type: 'auto' }
    ],

    data:[
        {name: 'test', phone: '12345'}
    ]
});

使用 ViewModel 的视图只是一个显示简单网格的面板:

Ext.define('ChildSessionBinding.view.main.ChildSession', {
    extend: 'Ext.panel.Panel',

    xtype: 'binding-child-session',

    title: 'Binding Child Session Demo',
    layout: {
        type: 'vbox',
        align: 'stretch'
    },

    viewModel: {
        type: 'binding.childsession'
    },

    controller: 'binding.childsession',

    session: true,

    items:[
        {
            flex: 1,
            xtype: 'grid',
            bind: '{customers}',
            columns:[
                {
                    dataIndex: 'name',
                    flex: 1,
                    text: 'Name'
                },
                {
                    dataIndex: 'phone',
                    flex: 1,
                    text: 'Phone'
                },
                {
                    xtype: 'widgetcolumn',
                    width: 90,
                    widget: {
                        xtype: 'button',
                        text: 'Edit',
                        handler: 'onEditCustomerClick'
                    }
                }
            ]
        }
    ]
});

当我在浏览器中加载它时,网格不会加载。我打开了 javascript 控制台,看到它正在尝试使用模型的完全限定名称向服务器发出 get 请求:

wtf

我已经将它与我试图复制的厨房水槽示例以及我在其他项目中创建的其他视图模型商店进行了比较,但我没有看到任何会导致这种情况的东西。

此外,为了排除任何项目文件结构问题,这里是文件夹/文件结构:

文件夹和文件结构

编辑

这是来自 javascript 控制台的堆栈跟踪:

javascript 控制台堆栈跟踪

有人看到问题了吗?

4

2 回答 2

2

将数据放在您的商店中,而不是在您的模型中。模型没有data property.

于 2015-08-27T18:28:18.190 回答
0

我没有使用过多的 Ext 5 或 6,但我想我在 Ext 4 上看到了这个错误。如果在类定义期间未定义所需的类,Ext 将尝试在根目录加载具有该名称的文件你的申请。我认为默认情况下 Ext 应该在这里抛出错误,而不是尝试加载文件,因为我认为大多数应用程序都没有设置为处理这个问题。

修复将是ChildSessionBinding.model.Customer在您加载之前定义和执行,ChildSessionBinding.view.main.ChildSessionModel或者让您的应用程序能够加载 Ext 期望的文件。

于 2015-08-27T16:33:12.617 回答