我一直無法添加滾動條到兩個視圖,我用分機顯示。每個視圖都是基本視圖的擴展,並且基數爲autoScroll: true
。我已驗證這些元素已正確分配了overflow: auto
屬性。Ext.view.View是否支持autoScroll配置選項?
我已經做了一些搜索,發現this question,並在應用它的解決方案後(即使我沒有使用這個'vbox'
佈局),它並沒有解決我的問題。
這是基礎的觀點:
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);
}
});
而且,這兩個孩子的觀點是:
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);
}
});
和:
Ext.define('Our.view.post.postList', {
extend: 'Our.extensions.baseList',
alias : 'widget.postList',
emptyText: 'No Posts',
title: 'Posts'
});
最後,我的問題是不Ext.view.View
實際上支持的是autoScroll
配置屬性(或者它只是忽略它,因爲它似乎),whi ch在Sencha文檔中列爲一個有效的配置屬性。我知道它不支持layout
配置,因此爲什麼鏈接問題解決方案無法正常工作。如果它支持它,我將如何去滾動條顯示出來?
編輯
有些事情我已經在我試圖拿出一個解決方案發現,在查看自己設置大小的作品,只要大小是硬編碼(像素集數) 。比如添加配置:height: 500,
或者帶有height: 500px;
的CSS類,但是通過CSS類的百分比大小根本不起作用 - 它們甚至沒有組件大小。
第二個編輯
正如我在註釋中規定的第一個答案好評,該組件是越來越大小1063
(一個值得注意的是,發展環境是1080×1920顯示器上(縱向),並與JavaScript控制檯在Chrome中運行它的可見幀的高度1063
像素。通過「可見的」我的意思是postPanel
的View
s的被加入。
我找到了一個臨時的解決方案,可惜我不知道認爲它是實際產品發佈的理想選擇 - 我是你請唱的refresh
,以將組件的高度設置爲面板高度爲postPanel
(其設置與接收的高度相同)的高度,這似乎強制它應用滾動條。我還爲postPanel
的resize
事件增加了一個聽衆,該事件觸發了兩個View
的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 */ }
}
}
}
主要的原因,我覺得這不是一個理想的解決方案是,它打破的意見自動調整大小的一半父寬度(並在refresh
事件中設置this.setSize()
調用中的寬度爲parent.getWidth()/2
並不會改變大小,即使父級調整大小也是如此。除此之外,我不確定此w生病加上任何開銷較慢的電腦或不。
視圖被添加到'postPanel',它被添加到頁面的內容部分,並且我運行了一些測試 - 無論視圖的大小總是靜態的,除非它被硬編碼爲一個集合大小 - 打破了從分辨率到分辨率的佈局流程。我嘗試將它們添加到視口,但Ext開始抱怨DOM問題。 –
如果您不打算使用視口並想要動態調整大小,您將不得不手動執行此操作:1.計算初始大小並2.監視頁面大小調整(請參閱文檔http://docs.sencha.com /ext-js/4-0/#!/api/Ext.EventManager-method-onWindowResize)。從視口文檔:「視口不提供滾動,因此如果需要使用autoScroll配置,Viewport中的子面板應提供滾動。」 - 那正是你想要的。 – dbrin
已經有一個'Viewport',我正在使用的面板和列出的兩個View被添加到'Viewport'的子組件,因此我不能直接將它們添加到'Viewport'。我已經閱讀過文檔,並且試圖設置'autoScroll'屬性,並且我已經驗證組件實際上正在獲得'overflow:auto;'CSS屬性,但它們應該是 - 但沒有滾動條出現。我也證實'View'獲得了一個高度設置(應該觸發條)。它沒有像我說的那樣工作。 –