如何在ExtJS viewmodel中加载非模型数据?

时间:2015-06-18 09:13:21

标签: java extjs viewmodel

我们已经慢慢习惯ExtJS,我们最近开始使用视图模型将数据绑定到我们的表单面板。一般来说,我们试图使我们的ExtJS模型与我们的后端java模型保持一致,并且所需的任何转换都是通过视图模型公式完成的。在查看一般数据时,这非常有效,但是当我们想要显示在任何类型的模型中不存在的更具体的数据时,我们不确定如何在客户端中处理它们的加载和创建。例如:

我有一个包含iddescription属性的文件夹模型。通过读取请求加载文件夹模型时,模型从数据库等加载描述。与用户模型相同。两个属性idusername。我的问题是,如果我有一个表单面板,我会显示用户及其相关文件夹。就数据库层而言,有一个1:1表,其中user id连接到folder id以匹配用户及其个人文件夹。但是,我们在任何模型中都没有此信息。有一个名为getUserFolder的特定服务,它为给定的特定folder返回user id个对象。我应该如何将它放在我的面板视图模型中,如何处理加载过程?

我是否应该创建一个代表该表的新模型并使用get请求来获取关联,然后使用formulas获取给定folder id的匹配user?我应该使用普通Ext.Ajax.request来获取folder id,然后加载文件夹模型吗?我应该创建一个返回所有数据(用户和文件夹)的常规服务,然后通过两个模型的setData在请求回调中在客户端匹配它们吗?什么是最佳做法?

TL; DR:在viewmodels中加载模型数据工作正常,但如何解决在视图模型中加载非模型数据的问题?它们仅在特定场景中需要,并且不包含在模型的创建中。

2 个答案:

答案 0 :(得分:0)

您的任务与视图无关。它是所有模型,数据模型:) ExtJS中有一个associations的概念,包括1:1 scenario。所以我建议调查一下。

答案 1 :(得分:0)

数据绑定和支持它的ViewModel是Ext JS的强大补充。

Ext.create('Ext.panel.Panel', {
    title: 'Simple Form',

    viewModel: {
        type: 'test'
    },

    layout: 'form',
    defaultType: 'textfield',

    items: [{
        fieldLabel: 'First Name',
        bind: '{firstName}' // uses "test" ViewModel from parent
    },{
        fieldLabel: 'Last Name',
        bind: '{lastName}'
    }]
});