7

私の extjs プロジェクトには、イベントpanelで表示するtoolbarがいくつかありmouseEnterます。これはうまくいっています。しかし、パネルを新しい html で更新しただけでは、mouseenterイベントが機能しません。

panel.update('hello');

次に、Chrome 開発者ツールを使用して、メソッドが新しいテキストを書き込む前にupdate、最後にネストされた内部パネルを消去していることに気付きました (つまり、「こんにちは」)。div

各パネルには3/4ネストされた div がありますが、update() を使用すると、パネルには2ネストされた div しかありませんか?

これが でmouseenterイベントを呼び出さなかった主な理由でした。これはpanel、がを有効なパネル アフターメソッドとしてExt識別できないためです。panelupdate()

とにかく、後でpanel以下のようにクロムコンソールで変数をチェックすることでこの問題を解決しました。

panel.body.dom.childNodes[0].children[0].childNodes[0].data = 'hello';

上記の実装はうんざりするように見えますが、私にとってはうまくいきました。これを行う他の良い方法はありますか?

編集

//In controller
this.control({          
   '#monthCalendar>panel>panel': {
        render: function(container){
             container.on('mouseenter',function(){                              
                  //do something here                                   
             },container,{element: 'el'});
        }
    }
})

アップデート前

<div class="x-panel x-box-item x-panel-default" id="panel-1078" style="left: 870px; top: 0px; margin: 0px; width: 174px; height: 52px;">
      <div id="panel-1078-body" class="x-panel-body x-panel-body-default x-panel-body-default x-box-layout-ct" style="width: 174px; height: 52px; left: 0px; top: 0px;">
           <div id="panel-1078-innerCt" class="x-box-inner " role="presentation" style="height: 50px; width: 172px;">
               <div id="panel-1078-targetEl" style="position: absolute; width: 172px; left: 0px; top: 0px; height: 1px;">
                    March 01
               </div>
           </div>
      </div>
</div>

アップデート後

<div class="x-panel x-box-item x-panel-default" id="panel-1078" style="left: 870px; top: 0px; margin: 0px; width: 174px; height: 52px;">
      <div id="panel-1078-body" class="x-panel-body x-panel-body-default x-panel-body-default x-box-layout-ct" style="width: 174px; height: 52px; left: 0px; top: 0px;">
          February 01
      </div>
</div>

私はSencha チャット ルームで利用できます。

4

2 に答える 2

-2

パネルのコンテンツを更新したい場合は、

panel.body.update('hello');

これにより、コンテンツ領域要素のみが更新され、パネルの整合性が損なわれることはありません。私の知る限り、AbstractComponent から継承された関数への呼び出しは内部パネルの構造を考慮せず、重要なパネルのマークアップを上書きするため、パネルで直接 update を呼び出すのは間違っています。

于 2013-04-08T14:03:47.723 に答える