我想在控制器内部定义一个ref,以便在选择更改时启用/禁用删除buitton。但是我没有把它弄好,所以getDelButton() - Method提供了未定义的。请帮忙......
控制器:
refs:[
{ ref: 'tabPanel', selector: 'viewport > tabPanel' },
{ ref: 'grid', selector: 'tabPanel > usermanagementgrid' },
{ ref: 'delButton', selector: 'grid > button #delete'}
],
...
this.getDelButton().setDisabled(false);
查看定义:
dockedItems: [{
xtype: 'toolbar',
items : [ {
xtype: 'button',
id: 'delete',
iconCls: 'drop-add',
text: 'Add',
tooltip: 'Press to add a new user.',
action: 'addUser',
scope: this,
},
提前致谢...
答案 0 :(得分:7)
您的选择器可能有3个问题:
button#delete
。gridpanel
代替grid
。button
不是grid
的直接孩子。在这种情况下,它很可能是toolbar
的直接孩子。这意味着你必须做更多的事情:gridpanel > toolbar > button#delete
或gridpanel button#delete
。参考上面的#3,>
选择器意味着父母的直接孩子。这意味着父母的孩子,而不仅仅是嵌套链下的某个组件。如果您只想在gridpanel
中点按按钮,请使用gridpanel button
。这将搜索所有gridpanel
个孩子以及所有这些孩子,以查找与button
匹配的任何内容。但请注意,以这种方式使用它将返回gridpanel
中的所有按钮(除非您指定了id)。
最后,在firebug中使用您的控制台将帮助您IMMENSELY。打开firebug,在控制台中可以运行命令。因此,加载网格并运行以下命令:
Ext.ComponentQuery.query('gridpanel > toolbar > button#delete')
并查看返回的内容。这样您就不必继续在代码中来回移动并刷新浏览器窗口。请记住,query()
会返回一个数组。
答案 1 :(得分:0)
我有一个类似的问题,它原来是网格选择器,通常你选择器使用xtype,网格有网格或网格面板。尝试使用selector: 'gridpanel >button #delete'
答案 2 :(得分:0)
检查itemId属性。