投稿

7月, 2013の投稿を表示しています

Ext.pass がどうしても使いづらい…

Ext.pass または、Ext.Function.pass のお話(2つは同じ動作します) さて、Extjs4 以降はMVCになったので、いろいろと楽です(設計とか) 今回探し回っていたのが下記URLの「関数委譲関数を生成する」の部分 http://code.xenophy.com/wp-trackback.php?p=1882 要するに ”コントローラーでイベントを受信した時に、引数を追加して共通処理を呼びたい。” って事なんですよ。(要約してない…) で、このURLを探し当てたわけですよ。 見つけて理解した時「さすがです。痒い所に手が届く!」とか思って読んでました。 しかし、詳しく理解するためにドキュメントを読むと…あれ? 追加の引数が前に来ちゃってますよ…? そう、Extjsのドキュメントを見ても、src/lang/Function.jsソースの中を見ても、実装して確認しても、 追加する引数が"前(第1引数)"に使われているではありませんかっ! なぜ? 追加引数が前だと、引数を指定したくない場合(デフォルト動作)の処理が面倒です。 例えば:   1.イベント引数の場所が決まって居ないので「第1引数の型がAの場合、型がBの場合、型がC…」と処理をわけなければいけない。   2.引数が不要なのに、空白引数を指定しなければいけない。 Ext.Function.pass(this.onButtonClick, [''], this)   3.引数の数によって入れ替えをする。 function( arg1, button, e, eOpts ) { if(arguments.length == 3 ) { eOpts = e; e = button; button = arg1; arg1 = ''; } // なんだかの処理 } などなど、面倒がたくさんです。 ちなみに私の意見 1.本末転倒過ぎる…メソッド分けるわ… 2.あほらしすぎる+チーム全体&保守チームに連携するのダル… 3.ありえ無い…でも僕の頭ではこれが限界…orz となり、3.を採用しました。 (ちなみに引数が2個、3個と増えれ...