0

グリッドのセルをクリックすると、ビューからコントローラーのメソッドを呼び出したい。

{ header: "<img src='/Content/images/icons/page_white_acrobat.png'/>", width: 30, dataIndex: 'documents', sortable: true, renderer: this.hasDocument,
    listeners: {
        click: function () {
        //how to call method in controller?
        }
    }
},

分かる方、アドバイスお願いします。

ありがとう!

4

2 に答える 2

2

Sencha によるプロジェクトの公式フォーラムには、extjs 4のチュートリアルがたくさんあります。

優れた開始チュートリアルへの便利なリンクを提供すると...グリッド管理に関する特定チュートリアルがあります...投票する前に、人々は実際にそれを見ることができると思います。それを見て、質問者がやりたいことを行うための非常に優れた方法を自分で見つけてください.

直接的な答えを提供することが常に最良の学習方法であるとは限りません。

とにかく...次はそのトリックを行います:

var controller = this.getController(Ext.String.capitalize(config.controller));
/* where config was an argument of your callback method) */

View from Controllers と View from Model を可能な限り分離することをお勧めします。私がリンクしたプロジェクトを見ると、Viewport.jsにそれを行う良い方法があることがわかります。.callParent(arguments)これらの短いスクリプトの最後にあるメソッド呼び出しでコントローラーを呼び出しています。

于 2012-09-02T06:58:42.890 に答える
1

元の人が答えに出くわしたか、トリックを行うために何かをしたと確信しています.

しかし、同じ疑問を持っているかもしれない人々のために、ここに何をすべきかの簡単な例があります:

アプリケーションの (MVC)-VIEW にリスナーを配置しないでください。要素に ID を付けます (この場合はグリッド)

(MVC) - CONTROLLER に次の関数を追加します。

init : function(app) {
    this.control({
        'myWindow': {
            afterrender : this.doAfterRender 
            /*SAMPLE*/
        },
        'myWindow #someGrid_ID' : {
            select: this.doSelect 
            /* THIS FUNCTION IS LOCATED in the Controller*/
        }
    });
},
doSelect : function() { 
    /*....*/ 
}

これで、コントローラーはイベントをリッスンして反応します。

これがこれに苦労しているかもしれない少数の人々に役立つことを願っています.

見る :

Dom クエリ - 説明:

  • "myWindow #someGrid_ID" - dom クエリは、要素の ID を参照する # ことに注意してください。
  • 「myWindow」 - ウィンドウのエイリアスを指します。
  • 「someGrid_ID」 - グリッドの ID を参照します。

(グリッドは「myWindow」の子要素です)

お役に立てれば

于 2013-07-08T16:41:01.337 に答える