2010-10-27 69 views
0

我正在使用YUI 2.7庫來處理網頁中的雙滑塊(範圍滑塊)控件。YUI API雙滑塊控件問題

它工作的很好 - 但是,我希望允許用戶通過Ajax切換範圍值 - 有效地將價格範圍從「0-50,000」更改爲子集(例如「50-250」)而無需重新加載這一頁。

問題是,它看起來從現有滑塊的值不會重置,即使我明確地將它們重新設置爲NULL函數內部以「重建」滑塊。

滑塊手柄在ajax請求後出現位置偏移(向右移動縮放比例)並且滑塊的值顯然隨機波動。

有沒有一種方法來顯式銷燬YUI滑塊對象,除了將其引用設置爲null?或者我只需要以某種方式重新聲明縮放比例和最小/最大值?

感謝所有幫助(我會嘗試發佈一個鏈接到一個例子ASAP)

下面的代碼:

function slider(bg,minthumb,maxthumb,minvalue,maxvalue,startmin,startmax,aSliderName,soptions) { 
     var scaleFactor = null; 
     var tickSize = null; 
     var range = null; 
     var dual_slider = null; 
     var initVals = null; 
     var Dom = null; 

     range = options.sliderLength; 
     if ((startmax - startmin) < soptions.sliderLength) { 
      tickSize = (soptions.sliderLength/(startmax - startmin)); 
     }else{ 
      tickSize = 1; 
     } 

     initVals = [ 0,soptions.sliderLength ], // Values assigned during instantiation 
     //Event = YAHOO.util.Event, 
     dual_slider, 
     scaleFactor = ((startmax - startmin)/soptions.sliderLength); 

     dual_slider = YAHOO.widget.Slider.getHorizDualSlider(
     bg,minthumb,maxthumb,range, tickSize, initVals); 

     dual_slider.subscribe("change", function(instance) { 
      priceMin = (dual_slider.minVal * scaleFactor) + startmin; 
      priceMax = (dual_slider.maxVal * scaleFactor) + startmin; 
     }); 

     dual_slider.subscribe("slideEnd", function(){ alert(priceMin + ' ' + priceMax); }); 
     return dual_slider; 
    } 

回答

2

商店startmin,startmax和dual_slider對象的比例因子,然後在你的ajax回調中,用新值更新這些屬性。將您的更改事件訂閱者更改爲引用this.startmin,this.startmax和this.scaleFactor。

Slider和DualSlider只能真正理解拇指的像素偏移,並報告這些值。正如你所做的(和大多數Slider例子),你需要應用轉換因子來將像素偏移量轉換爲「值」。這種常見的習慣用語已被引入YUI 3 Slider的核心邏輯(雖然庫中還沒有DualSlider)。

下面是說明動態更新值範圍的例子: http://yuiblog.com/sandbox/yui/v282/examples/slider/slider_factor_change.html

+0

感謝Luke--這就是我想知道,你用一個例子太釘下來!我很感激幫助。 – julio 2010-10-29 16:04:04