我真的希望有人可以帮助我,看起来这应该是显而易见的,但是sencha文档不是很容易阅读和不完整。我正在尝试构建一个搜索表单,但它似乎没有采取商店或网址,我无法弄清楚如何添加像页面这样的参数?有人可以帮忙吗?此代码只生成无法加载资源:null。
var searchField = new Ext.form.Search({
value:'Search',
url: 'someurl',
store: this.data_store,
cls:'searchfield',
listeners: {
focus: function(){ searchField.setValue(''); },
blur: function(){ if( searchField.getValue()=='' ){ searchField.setValue('Search'); } },
success: function(e){
console.log(e);
}
}
});
this.dockedItems = [ searchField ];
答案 0 :(得分:0)
Ext.form.FormPanel
不直接使用Ext.data.Store
或Ext.data.Model
,但会处理Ext.data.Model
的实例。假设您有以下型号:
Ext.regModel('MyForm', {
fields: [{name: 'id', type: 'int'},'name','description']
proxy: {
type: 'ajax',
url: 'url_to_load_and_save_form'
}
})
现在您的表单定义如下所示:
Ext.form.MyForm = Ext.extend(Ext.form.FormPanel, {
record : null,
model: 'MyForm',
items: [{
xtype: 'hidden',
name: 'id'
},{
xtype: 'textfield',
name: 'name',
allowBlank: false
},{
xtype: 'textarea',
name: 'description'
}],
submit : function(){
var record = this.getRecord() || Ext.ModelMgr.create({}, this.model);
this.updateRecord(record , true);
record.save({
scope: this,
success : function(record, opts){
this.fireEvent('saved', record);
},
callback: function(){
this.setLoading(false);
}
});
}
});
Ext.reg('MyForm',Ext.form.MyForm);
当然,您应该添加一些验证和一个实际调用Ext.form.MyForm.submit
方法的按钮。