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这是文档中使用的方法。请参阅更新的帖子。你不能对所有情况都这么说…在一些情况下,我使用相同的视图实例,在另一些情况下,我会创建一个新实例。这取决于视图的种类和你所做的工作。总之,你应该使用混合