2013-02-26 15 views

Odpowiedz

1

mam ten sam problem :(

Zrobiłem pełzający obejście (działa do 80%) Czasami wciąż skacze do góry. należy wiedzieć, że mam okno z układem " "Jeśli masz okno z (na przykład) układem" dopasuj "z xtype" formularza "- być może będziesz musiał trochę zmienić kod: Na przykład linia el.child (". x-window-ciało”, fasle) nie będzie działać.

init: function() {    
    this.control({ 

      ... 

     /** My Ext.window.Window is called reservationwindow **/ 
     'reservationwindow': { 
      afterrender: function(comp) { 
       // comp is this Ext.Component == wrapper 
       var el = comp.getEl(); 
       //extjs adds the scrollbar to the body element... 
       var elForm = el.child(".x-window-body", false); 
       // or el.child(".x-panel-body", false); 

       //we are listinig to the scroll-event now 
       this.myFormEl = elForm; 
        this.safeScroll = {top:0, left:0}; 
       elForm.on('scroll', function() { 
        console.log("save"); 

        this.safeScroll = this.myFormEl.getScroll(); 
       }, this); 
       elForm.on('click', function() { 
        var resWin = this.getResWin(); 
        resWin.scrollBy(0,this.safeScroll.top,false); 
        console.log("reset"); 
       }, this); 
       elForm.on('keyup', function() { 
        var resWin = this.getResWin(); 
        resWin.scrollBy(0, this.safeScroll.top, false); 
        console.log("reset"); 
       }, this); 
      } 

Jak widać, jestem słuchania przewijania zdarzenia i bezpiecznie i zresetuj pasek przewijania. Czasami (szczególnie jeśli piszesz bardzo szybko w polu tekstowym) zdarzenia są w innej kolejności, a strona wciąż przeskakuje na szczyt. Czasami widzisz też, jak migocze (jeśli potrzebuje zbyt dużo czasu, aby przywrócić pierwotną pozycję).

Więc .... Tak jak powiedziałem, jest to przerażające obejście. Jeśli znajdziesz lepsze rozwiązanie, proszę dać mi znać.

EDIT

Ja również zorientowali się, że rosną opcji na textareafield był jednym z awanturników.

{ 
    id: this.id + '-details', 
    xtype: 'textareafield', 
// grow: true,  now it isn't jumping 
    name: 'message', 
    fieldLabel: 'Zusätzliche Informationen', 
    labelAlign: 'top', 
    renderder: 'htmlEncode', 
    disabled: isDisabled, 
    anchor: '100%' 
} 
2

Próbowałem dowiedzieć się, dlaczego jedna z moich formularzy przewinęła się, a inne nie. Okazało się, że zapomniałem jawnie określić menedżera układu, a domyślny menedżer układu (zakotwiczenie) przewinął się do góry po zmianie ważności, a układ vbox nie. Chociaż wszystko wyglądało dokładnie tak samo (vbox z align: 'stretch'), zachowywał się inaczej, gdy błąd był pokazywany lub ukryty.

+0

dziękuję, działa dla mnie. Po prostu zmień układ na "vbox". – wengeezhang

Powiązane problemy