我在ext js中定义了一个自定义表单字段
自定义字段只包含一个按钮(此按钮可以是某些文本或图像的事件,无论如何)
我想强迫自己的价值。所以我设置getValue
以返回一些字符串
不调用该方法
我想要发生两件事
1. getValue
将是将在提交中发送的值
2. setValue
会向我提供form.load(...)
已加载的数据,我将按照我的方式处理...
这是一个示例,单击提交,您将看到getValue
未被调用。 http://jsfiddle.net/RB9Hp/
或更真实的用例:http://jsfiddle.net/FTV3R/< - 这不会从getValue发送值
Ext.define('Ext.form.CustomField', {
extend: 'Ext.form.FieldContainer',
alias: 'widget.customfield',
width: 300,
constructor: function(config) {
this.callParent([config]);
},
getValue : function(){
console.log("getValue");
return "test"; // I want to force new value.
},
setValue : function(val){},
initComponent: function() {
this.items = ([{'xtype' : 'button',text : 'some button'}]);
this.callParent();
}
});
答案 0 :(得分:4)
Ext.form.FieldContainer
只是表单字段组件的容器。如果您需要组件的行为类似于表单字段,则应使用Ext.form.field.Field
mixin。在文档中,我们可以读到这个mixin为表单字段的逻辑行为和状态提供了一个通用接口,包括:
在您的测试用例中,您还应将getValue
更改为getSubmitValue
,因为在您调用表单submit()
方法后从表单字段中收集数据时,表单会使用此方法。
Ext.define('Ext.form.CustomField', {
extend: 'Ext.form.FieldContainer',
alias: 'widget.customfield',
mixins: {
field: 'Ext.form.field.Field'
},
width: 300,
constructor: function(config) {
this.callParent([config]);
},
getValue : function(){
return "test"; // I want to force new value.
},
getSubmitValue: function() {
return "test";
},
setValue : function(val){},
initComponent: function() {
this.items = ([{'xtype' : 'button',text : 'some button'}]);
this.callParent();
}
});