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
意味「目に見える」とは。
私は残念ながら私にはない、一時的な解決策を発見しました実際の制作リリースには理想的だと思います - 私はあなたですXTemplate
のrefresh
を使用して、コンポーネントの高さをパネルの高さに設定します(これは受信したのと同じ高さに設定されています)。これはスクロールバーを適用するように見えます。また、postPanel
のresize
イベントにリスナーを追加して、の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低速のコンピュータにオーバーヘッドを加えるかどうか。
ビューは、ページのコンテンツ部分に追加された 'postPanel'に追加されました。ビューのサイズが設定されたサイズでハードコーディングされていない限り常に静的であるかどうかにかかわらず、いくつかのテストを実行しました。レイアウトから解像度までのフローを分割します。 Viewportに追加しようとしましたが、ExtはDOMの問題について不平を言っていました。 –
ビューポートを使用せず、動的サイジングを使用する場合は、手動で行う必要があります。1.初期サイズを計算し、2.ページのサイズ変更を監視します(ドキュメントhttp://docs.sencha.comを参照)。 /ext-js/4-0/#!/api/Ext.EventManager-method-onWindowResize)。ビューポートのドキュメントから: "ビューポートはスクロールを提供しないので、必要に応じてautoScroll設定を使用して、ビューポート内の子パネルがスクロールを提供する必要があります。それはあなたが望むものです。 – dbrin
既に 'Viewport'があります。私が使っているパネルで、' Viewport'の子コンポーネントに2つのリストが追加されているので、 'Viewport'に直接追加することはできません。私はドキュメントを読んで、 'autoScroll'プロパティを設定しようとしましたが、実際にコンポーネントが実際に' overflow:auto; 'CSSプロパティを取得していることを確認しましたが、スクロールバーは表示されませんでした。私はまた、 'View'が(バーを引き起こしたはずの)高さセットを取得していることを確認しました。私が言ったように、それはうまくいかなかった。 –