Extjs this.up(...).down(...) 为空
Posted
技术标签:
【中文标题】Extjs this.up(...).down(...) 为空【英文标题】:Extjs this.up(...).down(...) is null 【发布时间】:2013-03-16 07:08:43 【问题描述】:当我按下保存按钮时,它工作正常。但是当我在此字段上按 Enter 时遇到一些问题,错误消息是 this.up(...).down(...) 为空。下面给出了我的来自窗口。 我只是想,当您在文本框上按 Enter 键时,它会像您单击按钮一样。
谁能帮忙?
Ext.define('$pkgName.v01i002001.SV01I00200201' ,
extend : 'Ext.window.Window',
alias : 'widget.sv01i00200201',
id : 'sv01i00200201',
title : 'MANUFACTURE :: SV01I00200201',
minimizable : false,
maximizable : false,
autoShow : true,
resizable : false,
border : false,
modal : true,
padding : '0 5 0 5',
icon : "$resource(dir: 'images', file: 'APP01003.png')",
layout :
type: 'vbox',
align: 'stretch'
,
initComponent : function ()
var me = this;
var required = '<span style="color:red;font-weight:bold" data-qtip="Required">*</span>';
this.items = [
xtype : 'form',
bodyStyle :
padding : '10px',
border : true
,
tbar: Ext.create('Ext.ux.StatusBar',
id : 'win-statusbar-sv01i00200201',
topBorder :true,
text :'Status',
defaultIconCls : 'info',
defaultText : 'Status'
),
items : [
xtype : 'textfield',
fieldLabel : 'Id',
name : 'id',
width : 265,
anchor : '95%',
emptyText : 'Not need...',
readOnly : true
,
xtype : 'textfield',
fieldLabel : 'Manufac. Name',
emptyText : 'Write Manufacturer name',
allowBlank : false,
name : 'name',
width : 265,
anchor : '95%',
listeners:
specialkey : function(field, e)
if (e.getKey() == e.ENTER || e.getKey()==e.TAB)
//Ext.get('save-sv01i00200201').dom.click(); //it work
// this.up().up().down('button[action=save]').fireEvent('click'); //TypeError: button.up is not a function
// this.up('sv01i00200201').down('button[action=save]').fireEvent('click');//TypeError: button.up is not a function
// this.up('window').down('button[action=save]').fireEvent('click'); //TypeError: button.up is not a function
]
]
this.buttons = [
text : 'Save',
icon : "$resource(dir: 'images', file: 'SAV01004.png')",
id : 'save-sv01i00200201',
action : 'save'
,
text : 'Close',
icon : "$resource(dir: 'images', file: 'CLS01001.png')",
scope : this,
handler : function(button)
var win = button.up('window');
win.close();
]
me.callParent(arguments);
);
下面给出我的控制器
Ext.define('$pkgName.C01I002001',
extend : 'Ext.app.Controller',
requires: [],
views:[
'V01I001000',
'v01i002001.SV01I00200100',
'v01i002001.SV01I00200101',
'v01i001001.SV01I00200104',
'v01i001001.SV01I00200106',
'v01i002001.SV01I00200201',
'v01i002001.SV01I00200301'
],
refs : [
ref : 'v01i002001',
selector: 'window'
],
init: function()
manuStore = Ext.data.StoreManager.get('S01I002001');
var me = this;
me.category = undefined;
me.control(
'sv01i00200201 button[action=save]':
click : this.manufacturerSave
);
,
manufacturerSave : function(button)
win = button.up('window'),
form = win.down('form'),
record = form.getRecord(),
values = form.getValues();
if(form.getForm().isValid())
var manufacturer = Ext.create('$appName.model.M01I002001',
name:values.name
);
manufacturer.save(
scope:this,
success:function(records, operation)
var text = operation.response.responseText,
json = Ext.decode(text);
form.loadRecord(records);
controller000.statusbar('sv01i00200201', json.message, 'saveInfo', 'activecaption');
manuStore.load();
var win = Ext.getCmp('sv01i00200201');
controller000.closeWindow(win);
,
failure:function(model, operation)
controller000.statusbar('sv01i00200201', operation.error, 'warnInfo', 'red');
);
else
controller000.statusbar('sv01i00200201', 'Necessary Field Required', 'warnInfo', 'red');
);
【问题讨论】:
所以你的问题/问题已经变异了...... XD你能描述一下当前的问题吗? 我只是想,当我在文本框上按下回车键时,它就像我点击了按钮一样。但它只能通过 Ext.get('save-sv01i00200201').dom.click();不是其他系统我相信它会在其他系统上工作,但我找不到我的错误 【参考方案1】:this.up()
只向上冒出一层,目标是您的字段的直接父级(表单面板)。请尝试以下选项之一:
this.up().up().down('button[action=save]').fireEvent('click');
this.up('window').down('button[action=save]').fireEvent('click');
this.up('#sv01i00200201').down('button[action=save]').fireEvent('click');
看看documentation ;)
第 2 部分:“button.up 不是函数”
我想我明白了,您必须手动将按钮作为参数传递给 fireEvent
函数:
var button = this.up('window').down('button[action=save]');
button.fireEvent('click', button);
【讨论】:
谢谢你。通过您的过程,我已经尝试过,但给出了一个错误,例如 button.up is not a function。我想你会解决它我给我的控制器动作波纹管'sv01i00200201 button[action=save]':点击:this.manufacturerSave,manufacturerSave:function(button)win = button.up('window'),form = win.down('form'), record = form.getRecord(), values = form.getValues(); @OmarFaruq 你能更新你的问题吗?在 cmets 中它的可读性不高。谢谢。【参考方案2】:最后我通过像 as 一样创建 id 来做到这一点
Ext.get('save-sv01i00200201').dom.click();
按钮修改并创建id
text : 'Save',
icon : "$resource(dir: 'images', file: 'SAV01004.png')",
id : 'save-sv01i00200201',
action : 'save'
【讨论】:
以上是关于Extjs this.up(...).down(...) 为空的主要内容,如果未能解决你的问题,请参考以下文章
Android sencha extjs 不支持事件焦点和 keyup