让我解释一下我的情况:
我的模型中有数组字段
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)模型关系(不好因为我必须为每个相关模型实现'创建,更新和删除'并手动加载它们)
感谢您的阅读,欢迎任何想法!
答案 0 :(得分:1)
与您的问题没有直接关系,但“array”不是Ext.data.Field的有效字段类型。使用'auto'进行无数据转换,或者只是不指定类型。
Re:自定义的复杂表单字段,使用ExtJS肯定是可能的,创建Trigger字段的扩展名绝对是你想要做的。以下是处理复杂数据的自定义触发器字段的示例:http://existdissolve.com/2012/12/extjs-4-custom-editor-for-property-grid/。该示例适用于自定义属性网格,但任何自定义表单字段的原理都相同。
自定义字段中最重要的部分将是createPicker()方法的实现以及您为设置基础字段的值而定义的任何机制。
希望这能为你提供一个好的起点。