我一直在尋找一種乾淨的方式來動態調整Kendo UI滑塊的大小;淘汰賽劍道和保羅愛爾蘭的智能調整大小的插件,使我在一個合理可行的解決方案爲個人滑塊到達:通過Knockout動態調整多個Kendo滑塊的大小
<div class="sliderWrapper">
<input class="slider col" data-bind="kendoSlider: { value: currValue, enabled: enabled, min: 0, max: 100, slide: sliderOnSlide, tickPlacement: 'none', smallStep: 1, showButtons: false, tooltip: { 'enabled': false } }, sliderTip: {}" />
</div>
var ViewModel = function (initValue) {
this.currValue = ko.observable(initValue);
this.enabled = ko.observable(true);
};
ko.bindingHandlers.sliderTip = {
init: function(element, valueAccessor) {
var dragger = $(element).closest('.k-slider').find('.k-draghandle');
dragger.empty().html('<span class="sliderTip">0%</span>');
}
};
ko.applyBindings(new ViewModel(0));
$(window).smartresize(function() {
$('.sliderBox').each(function() {
var value = $(this).val();
$(this).prev().empty().append('<input class="slider col" data-bind="kendoSlider: { value: currValue, enabled: enabled, min: 0, max: 100, slide: sliderOnSlide, tickPlacement: \'none\', smallStep: 1, showButtons: false, tooltip: { \'enabled\': false } }, sliderTip: {}" />');
ko.applyBindings(new ViewModel(value));
$(this).prev().find('.sliderTip').text(value + '%');
});
});
您可以通過這個小提琴拖動結果窗格中的邊界看到的結果是:http://jsfiddle.net/MontiDesign/DuZK3/24/
我很高興,但我一直在與Knockout場景合作,允許動態添加多個滑塊(請參閱http://jsfiddle.net/MontiDesign/DuZK3/37/)。上面的解決方案簡單地刪除了所有的滑塊。我嘗試了變化使用不工作的自定義綁定處理程序 - 和原諒我,如果這僅僅是可怕的,但我是新來的淘汰賽和JS/jQuery的技能還在不斷增加:
ko.bindingHandlers.resizeSlider = {
init: function(element, valueAccessor, allBindings) {
var slider = $(element).data('kendoSlider');
if (slider) {
$(window).smartresize(function() {
$(slider).closest('.sliderWrapper').next().each(function() {
var value = $(this).val();
$(this).prev().empty().append('<input class="slider col" data-bind="kendoSlider: { value: currValue, enabled: enabled, min: 0, max: 100, slide: sliderOnSlide, tickPlacement: \'none\', smallStep: 1, showButtons: false, tooltip: { \'enabled\': false } }, sliderTip: {}" />');
ko.applyBindings(new CreateSlider(value));
$(this).prev().find('.sliderTip').text(value + '%');
});
});
}
}
}
我想我需要遍歷動態創建的滑塊數組並對每個應用調整大小函數,但我不確定如何使用Knockout完成此操作。
在此先感謝您提供的任何幫助!