GridViewのハンドラをControlerとして外に出してディスパッチャとして実装したかったんだけど
どうもControlerでのthisがおかしい。スコープの指定が間違ってた。
またまちがえそうだから残しておこう。
GridViewのinitcomponent内で
//ExtJs提供イベント
this.addListener('rowdblclick', this._control.onRowDblClick, this._control, null) ;
this.addListener('rowcontextmenu', this._control.onRowContextMenu, this._control, null);
第三引数がthisだったから、onRowDblClick、onRowContextMenuでのthisがGridViewになってたわけで。。
コントローラはこんな感じにしておこう。
引数は後からconfigでまとめる。
ダイアログはどーしよ。。。
BaseIF.Control = function( dialog, model ){
var me = this;
me._dialog = dialog;
me._model = model;
//ダイアログの表示
me._dispDetailView = function(){
me._dialog.show();
};
};
BaseIF.Control.prototype = {
/**
* @onSave
*/
onSave: function(){
this._model.doSave();
},
//Loadイベントハンドラ
onLoad: function(){
this._model.doLoad();
},
//Addイベントハンドラ
onAddRec: function(){
this._model.doAddRec();
},
//Copyイベントハンドラ
onCopyRec: function(){
this._model.doCopyRec();
},
//Delイベントハンドラ
onDelRec: function(){
this._model.doDelRec();
},
//Detailダイアログ表示
onDispDetailView: function(){
this._dispDetailView();
},
//------------------------------
// ハンドラ/コールバック
//------------------------------
//ダブルクリック時イベントハンドラ
onRowDblClick : function(){
this._dispDetailView();
},
//コンテキストメニュー時イベントハンドラ
onRowContextMenu : function( grid, rowIndex, e )
{
menu = new Ext.menu.Menu(
[
{
text: '追加',
iconCls: 'icon-add',
handler: this.onAddRec,
scope: this
}, {
text: '複製',
iconCls: 'icon-copy',
handler: this.onCopyRec,
scope: this
}, {
text: '削除',
iconCls: 'icon-delete',
handler: this.onDelRec,
scope: this
}, {
text: '保存',
iconCls: 'icon-delete',
handler: this.onSave,
scope: this
}, {
text: '更新',
iconCls: 'icon-delete',
handler: this.onLoad,
scope: this
}, {
text: '編集',
iconCls: 'icon-delete',
handler: this.onDispDetailView,
scope: this
}
]);
//システムコンテキスト解除
e.stopEvent();
menu.showAt(e.getPoint());
}
};
なーんかうまくまとまらないなぁ。。。またつくりなおすかなぁ。だめだ。もうねよ。
転職用の日記だったのですが趣味でExtJsを使用して遊んでます。 いろいろと作業期間があく為、そのための備忘録ブログです。記事内容等で問題等があっても責任は取りません。とうとう趣味プログラマになりました。
登録:
コメントの投稿 (Atom)
node + ejs + Socket.io のサンプル
まずい。。 一年間、一回も更新してない!!! つまり、、 趣味の時間がほぼ皆無ということの現れです。 業務と子育てに追われた一年でしたね。。。。。 危なく年をこすところだった。あぶない。なぶあい。 話を変えて。 今月初旬に 社内でちょっとしたプレゼンをする事に...
-
bakeでBancha用のモデルとコントローラの作成 bakeで自動生成します。 まず、カレントディレクトリをappにして cd UserDir/public_html/app ./Console/cake bake を実行。 DB設定 Welcome...
-
banchaを使ってみる banchaのサイトは こちら から インストールから まずはCakeの設置。 (bancha:0.9.5はcake2.1.X(現在は2.1.5)に対応しています。 Dispacherの実装が2.2.Xだとことなるため、Banch...
-
疎通させてみる Bancha使ってみたくて cakeをざっと流し読みしたけど、 まだ疎通できてないので疎通させてみようと思います。 お題はBanchaのサンプルをMVCに再配置、と、 テスト的にコンポーネントからイベント発火させて Mainコントローラでディスパッ...
0 件のコメント:
コメントを投稿