ExtJS复合字段

时间:2013-05-29 10:43:33

标签: extjs extjs4 extjs4.2

让我解释一下我的情况:

我的模型中有数组字段

Ext.define('MyModel',{
  extend: 'Ext.data.Model',
  fields: [
    { name: 'myfield', type: 'array' }
  ]
})

这样的内容数据

data = Ext.create('MyModel',{
  myfield: [ 'one', 'two', 'three', 'four' ]
})

我希望扩展Ext.form.field.Base以创建将此数组视为待办事项列表的字段,并在其中包含项目(Ext.form.field.Trigger添加“todo”和Ext.ListView以显示“todo's” )。

我不知道让Ext.form.field.Base包含项目有多困难,是否有更好的解决方案。

字段必须在loadRecord()上获取数组并在表单的getRecord()上提供。

我看到其他可能的解决方案:

1)仅使用html-template和vanilla-javascript创建Field(糟糕,因为为什么要实现ExtJS中已经存在的东西)

2)模型关系(不好因为我必须为每个相关模型实现'创建,更新和删除'并手动加载它们)

感谢您的阅读,欢迎任何想法!

1 个答案:

答案 0 :(得分:1)

与您的问题没有直接关系,但“array”不是Ext.data.Field的有效字段类型。使用'auto'进行无数据转换,或者只是不指定类型。

Re:自定义的复杂表单字段,使用ExtJS肯定是可能的,创建Trigger字段的扩展名绝对是你想要做的。以下是处理复杂数据的自定义触发器字段的示例:http://existdissolve.com/2012/12/extjs-4-custom-editor-for-property-grid/。该示例适用于自定义属性网格,但任何自定义表单字段的原理都相同。

自定义字段中最重要的部分将是createPicker()方法的实现以及您为设置基础字段的值而定义的任何机制。

希望这能为你提供一个好的起点。