5

私はこのようなグリッドパネルを持っています

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';

どちらも動作しません..助けてください。

4

2 に答える 2

9

UPD: ExtJS4.1refs用のSenchaのドキュメントをいくつか紹介します。

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', },
]

this.getSalesGrid();次に、コントローラーのようなメソッドのどこからでもSalesGridビューにアクセスできます。

あなたの場合:

changeTitle: function(newTitle){
  this.getSalesGrid().setTitle('title_changed');
}
于 2012-09-03T11:54:02.363 に答える
3

ノート

記述されたケースでは、webbanditの回答がビューインスタンスにアクセスするのに最適です。これは、自動生成されたゲッターの使用を明確にするために残ります。

使用するセレクターメソッドは、クラスを提供するだけで、インスタンスは提供しません。

あなたはそれをこのようにすべきです

this.getView('SalesGrid').create().setTitle('title_changed');

APIを参照してください

于 2012-09-03T12:05:13.367 に答える