2011-12-09 6 views
2

Extで表示している2つのビューにスクロールバーを追加できませんでした。各ビューはベースビューの拡張であり、ベースはautoScroll: trueです。要素がoverflow: autoプロパティに正しく割り当てられていることを確認しました。Ext.view.ViewはautoScroll configオプションをサポートしていますか?

this questionを検索して解決しました(この'vbox'レイアウトを使用していなくても)問題を解決できませんでした。 Ext.view.Viewが実際にサポートしていない最終的には、私の質問がある

Ext.define('Our.view.post.postList', { 
    extend: 'Our.extensions.baseList', 
    alias : 'widget.postList', 
    emptyText: 'No Posts', 
    title: 'Posts' 
}); 

Ext.define('Our.extensions.baseList', { 
    extend: 'Ext.view.View', 
    itemSelector: 'div.postContainer', 
    autoScroll: true, 

    initComponent: function(){ 
     this.tpl = new Ext.XTemplate(   
      '<tpl for=".">', 
       '<div name="postContainer" class="postContainer">', 
        // Contains Layout for posts 
       '</div>',  

      { // can run internal functions within a template 
       createButton: function(idPost){ 
        // Creates layout for buttons and returns it 
       } 
      } 
     ); 

     this.callParent(arguments); 
    } 
}); 

そして2つの子ビューは、次のとおりです:ここ

は、ベースビューがある

Ext.define('Our.view.post.convList', { 
    extend: 'Our.extensions.baseList', 
    alias : 'widget.convList', 
    emptyText: 'No Conversation Followed', 
    title: 'Coversations', 

    initComponent: function(){  
     this.store = new Ext.create('Ext.data.Store', { 
      id:'convStore', 
      model: 'Our.model.Post', 
      data: [] 
     });  

     this.callParent(arguments); 
    } 
}); 

そして、 autoScroll設定プロパティ(または、それを単に無視するかどうか)、whi chは有効な設定プロパティとしてSenchaのドキュメントにリストされています。私はそれがlayoutの設定をサポートしていないことを知っています。なぜ、リンクされた質問の解決策が機能しなかったのですか?それがサポートされている場合、スクロールバーを表示するにはどうすればいいですか?ビュー自体にサイズを設定

EDIT

私は解決策を考え出すために、私の試みで発見したいくつかのものは、限りサイズがハードコーディングされているように動作(設定された画素数) 。 config:height: 500,やCSSクラスのheight: 500px;を追加するなど、CSSクラスでのパーセンテージサイズはまったく機能しません。コンポーネントのサイズを変更することさえありません。私は最初の回答にコメントで述べたように

SECOND EDIT

は、コンポーネントが、ノートは、開発環境は肖像画で(1080x1920のモニタ上で、ということである(サイズ1063を得ていた、受信)ととJavaScriptコンソールはChromeで実行されていることは、可視フレームの高さが1063ピクセルであるのです。私はView秒が追加されていることpostPanel意味「目に見える」とは。

私は残念ながら私にはない、一時的な解決策を発見しました実際の制作リリースには理想的だと思います - 私はあなたですXTemplaterefreshを使用して、コンポーネントの高さをパネルの高さに設定します(これは受信したのと同じ高さに設定されています)。これはスクロールバーを適用するように見えます。また、postPanelresizeイベントにリスナーを追加して、のrefreshイベントを発生させました。

追加情報...

listeners: { 
    refresh: function() { 
     var parent = this.up('postPanel'); 
     if (parent != undefined) { 
      this.setSize({ 
       width: undefined, 
       height: parent.getHeight() 
      }); 
     } 
    } 
} 

postPanelへ:子ビューへ

listeners: { 
    resize: function() { 
     var postList = this.down('postList'); 

     if (postList != undefined) { 
      try { 
       postList.fireEvent('refresh'); 
      } catch(e) { /* ignored */ } 
     } 

     var convList = this.down('convList'); 

     if (convList != undefined) { 
      try { 
       convList.fireEvent('refresh'); 
      } catch(e) { /* ignored */ } 
     } 
    } 
} 

私は、これは理想的なソリューションではありません感じる主な理由は、それが半分にビューに自動サイズ変更を壊れていることです幅をparent.getWidth()/2に設定しても、親のサイズを変更しても、refreshイベントのthis.setSize()コールのサイズはまったく変更されません。これに加えて、このw低速のコンピュータにオーバーヘッドを加えるかどうか。

答えて

1

したがって、autoScrollは、コンポーネントが収まると予想されるボックスのサイズを知っている限り機能します。特定のボックスサイズを設定しない場合は、ビューコンポーネントをフィットレイアウト。次に、ビューポートがボックスのサイズを指示し、ビューは割り当てられたスペースでスクロールし始めます。このプリンシパルはすべてのコンテナに使用されます.Somwhereはボックスのサイズを指定する必要があります。 Viewportはデフォルトで全画面のサイズを把握する魔法のコンポーネントです。

+0

ビューは、ページのコンテンツ部分に追加された 'postPanel'に追加されました。ビューのサイズが設定されたサイズでハードコーディングされていない限り常に静的であるかどうかにかかわらず、いくつかのテストを実行しました。レイアウトから解像度までのフローを分割します。 Viewportに追加しようとしましたが、ExtはDOMの問題について不平を言っていました。 –

+0

ビューポートを使用せず、動的サイジングを使用する場合は、手動で行う必要があります。1.初期サイズを計算し、2.ページのサイズ変更を監視します(ドキュメントhttp://docs.sencha.comを参照)。 /ext-js/4-0/#!/api/Ext.EventManager-method-onWindowResize)。ビューポートのドキュメントから: "ビューポートはスクロールを提供しないので、必要に応じてautoScroll設定を使用して、ビューポート内の子パネルがスクロールを提供する必要があります。それはあなたが望むものです。 – dbrin

+0

既に 'Viewport'があります。私が使っているパネルで、' Viewport'の子コンポーネントに2つのリストが追加されているので、 'Viewport'に直接追加することはできません。私はドキュメントを読んで、 'autoScroll'プロパティを設定しようとしましたが、実際にコンポーネントが実際に' overflow:auto; 'CSSプロパティを取得していることを確認しましたが、スクロールバーは表示されませんでした。私はまた、 'View'が(バーを引き起こしたはずの)高さセットを取得していることを確認しました。私が言ったように、それはうまくいかなかった。 –

0

ビューをそれぞれlayout: 'fix'のコンテナに配置してください。次に、ビューのautoScroll: trueは、コンテンツがそれを必要とするときに、スクロールバーを強制します。

+0

これはどこにも反映されていませんが、これはもはや問題ではないことは分かっています。私たちは長い間、Extを放棄してきましたが、4.0リリースには膨大な数のバグがあり、それらが約束された時。私はこの問題が解決したと確信しています(彼らが来た場合)しかし、再び私たちはExtの使用を断念しました。しかし、答えをありがとう! –

関連する問題