2010-10-27 71 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