我们已经慢慢习惯ExtJS,我们最近开始使用视图模型将数据绑定到我们的表单面板。一般来说,我们试图使我们的ExtJS模型与我们的后端java模型保持一致,并且所需的任何转换都是通过视图模型公式完成的。在查看一般数据时,这非常有效,但是当我们想要显示在任何类型的模型中不存在的更具体的数据时,我们不确定如何在客户端中处理它们的加载和创建。例如:
我有一个包含id
和description
属性的文件夹模型。通过读取请求加载文件夹模型时,模型从数据库等加载描述。与用户模型相同。两个属性id
和username
。我的问题是,如果我有一个表单面板,我会显示用户及其相关文件夹。就数据库层而言,有一个1:1表,其中user id
连接到folder id
以匹配用户及其个人文件夹。但是,我们在任何模型中都没有此信息。有一个名为getUserFolder
的特定服务,它为给定的特定folder
返回user id
个对象。我应该如何将它放在我的面板视图模型中,如何处理加载过程?
我是否应该创建一个代表该表的新模型并使用get请求来获取关联,然后使用formulas
获取给定folder id
的匹配user
?我应该使用普通Ext.Ajax.request
来获取folder id
,然后加载文件夹模型吗?我应该创建一个返回所有数据(用户和文件夹)的常规服务,然后通过两个模型的setData
在请求回调中在客户端匹配它们吗?什么是最佳做法?
TL; DR:在viewmodels中加载模型数据工作正常,但如何解决在视图模型中加载非模型数据的问题?它们仅在特定场景中需要,并且不包含在模型的创建中。
答案 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}'
}]
});