extjs更改事件的面板标题
我有一个这样的网格面板extjs更改事件的面板标题,extjs,grid,panel,title,extjs4.1,Extjs,Grid,Panel,Title,Extjs4.1,我有一个这样的网格面板 Ext.define('sCon.view.SalesGrid',{ extend: 'Ext.grid.GridPanel', title: 'Sales Data', //other params initComponent: function(){ this.callParent(arguments); } }); 在单击事件中,我想更改此面板
Ext.define('sCon.view.SalesGrid',{
extend: 'Ext.grid.GridPanel',
title: 'Sales Data',
//other params
initComponent: function(){
this.callParent(arguments);
}
});
在单击事件中,我想更改此面板的标题。控制器中的代码如下所示
Ext.define('sCon.controller.SalesGridController', {
extend: 'Ext.app.Controller',
views: ['SalesGrid'],
// other handlers
changeTitle: function(newTitle){
this.getView('SalesGrid').setTitle('title_changed');
}
目前它说它没有setTitle()函数。但是文档说网格面板有setTitle()函数。我还尝试使用'title'变量更改标题,如
changeTitle: function(newTitle){
this.getView('SalesGrid').title = 'title_changed';
两者都不起作用。。请提供帮助。UPD:是Sencha针对ExtJS 4.1提供的一些参考文件
使用控制器的refs
属性获取对任何组件的引用
在您的示例中:
Ext.define('sCon.view.SalesGrid',{
extend: 'Ext.grid.GridPanel',
title: 'Sales Data',
alias: 'widget.salesgrid',
//other params
initComponent: function(){
this.callParent(arguments);
}
});
在控制器中添加:
refs: [
{ ref: 'salesGrid', selector: 'salesgrid', },
]
然后,您可以从控制器中的任何位置访问SalesGrid视图,如this.getSalesGrid()代码>方法
就你而言:
changeTitle: function(newTitle){
this.getSalesGrid().setTitle('title_changed');
}
注意
在描述的情况下,webbandit的答案是访问视图实例的最佳答案,这一个
留下来澄清自动生成的getter的使用
您使用的选择器方法只提供类,而不是它的实例
你应该这样做
this.getView('SalesGrid').create().setTitle('title_changed');
请参见您的错误意味着this.getView('SalesGrid')
没有.setTitle()
方法返回了某些内容。看起来你还没有通过this.getView('SalesGrid')
获得“SalesGrid”视图。是的,我忘了提到这个。当我记录console.log(this.getView('SalesGrid'))时,我得到了类似这样的东西-函数构造函数(){返回this.constructor.apply(this,arguments)| | null;},当我记录-this.getView('SalesGrid')时,我得到了“未定义”。this.query('SalesGrid')[0]
或this.getComponent(0)
在this.getView的statid中('SalesGrid')
将为您提供SalesGrid…或@webband。使用控制器,他的解决方案甚至更好…谢谢!工作…思考“视图:['SalesGrid'],”它本身会引用我的salesGrid。@webbandit您应该解释更多关于引用的内容,或者至少提供API链接。@webbandit这个属性是新的,因为它是4.1。是的。花一些时间移动到4.1。从一个版本到另一个版本,ExtJS变得越来越好。它似乎不起作用。即使它起作用,我还是宁愿使用同一个object实例来代替of在每个事件上创建新对象?(我不太清楚..我是extjs新手)@amruthkesav这是文档中使用的方法。请参阅更新的帖子。你不能对所有情况都这么说…在一些情况下,我使用相同的视图实例,在另一些情况下,我会创建一个新实例。这取决于视图的种类和你所做的工作。总之,你应该使用混合