-1

Ext Js 4 は初めてです。質問はかなり単純ですが、ドキュメントやフォーラムが見つかりません。私は xtype: 'panel' を持っています。これには、いくつかのリンクを含むイメージ マップがあります。「コントローラー」で制御できるように、そのパネルにリスナーを追加しようとしています。MVCモデルに従うようにするにはどうすればよいですか??

 {
    xtype:'panel',
    id:'tab2',
    html:
    '<div><img src="app/image/tableRoomPoster.jpg"  usemap=#conferenceRoom >'+
    '<map id="conferenceRoom" name="conferenceRoom">' + 
         '<div id ="remote"> <area shape="rect" alt="Remote" title="" coords="727,568,834,613" href="#" ></div>'+   
         '<div id ="virOfficeMain"><area shape="circle" alt="virOfficeMain" title="" coords="28,624,18" href="#" ></div>'+
     '</map></div>' +    

    '<div  id="toggleRemote" style="display:none"><img src="app/image/remoteShrink.png"  usemap=#controlRemote >'+
    '<map id="controlRemote" name="controlRemote">'+
            '<area id ="remoteOff" shape="circle" alt="Off" title="" coords="118,51,11" href="#" />'+   
                '<div class="playVideoMonitor" id="button1"style="display:none">'+
            '<area  shape="rect" alt="button1" title="" coords="20,74,42,87" href="#"/>'+
                '<iframe border:"block" width="302" height="174"src="http://www.youtube.com/embed/VHySPMCNS34" '+
                'frameborder="0" ></iframe></div>'+
            '<div class="playVideoMonitor" id="button2" style="display:none">'+
                '<area  shape="rect" alt="button2" title="" coords="61,75,85,89" href="#"/>'+
                '<iframe id="video2"width="302" height="174" src="http://www.youtube.com/embed/ts8Q6LwDMcs" '+
                'frameborder="0" allowfullscreen></iframe></map></div>' 

     }],
     listeners : {
         afterrender : function(c) {
             c.getEl().on('click', function(e){ 
                 this.fireEvent('click', c); 
             }, c);
         }
     }
4

1 に答える 1

0

リスナーでデリゲート オプションを使用して、パネル内に埋め込まれた要素から発生するイベントをリッスンできます。

このようなもの:

listeners: {
    el:{  
      'click':{
          delegate:'img', 
          fn:function (event, target) {
               //do something
           }
       }
    }
 }

ちなみに、このリスナーはコントローラーではなく直接パネル上にあるため、MVC を使用したいというあなたの欲求とは関係ありません。//do somethingコントローラーにブロックを引き継がせたい場合は、呼び出すことができますthis.fireEvent('myEventName', somedata)。コントローラーは、パネルから放出されるこのイベントをリッスンし、データを処理します。- これで MVC を取得できました :)

于 2013-01-29T01:16:24.887 に答える