uiSlider: function(){
var arrLength = (this.cDat).length - 1,
value = this.cDat,
pieTitle = this.cDet,
config = this.anyChartConfig();
console.log( this.anyChartConfig(2) );
$( "#slider" ).slider({
range: "min",
min: 0,
max: arrLength,
step: 1,
change: function ( event, ui ) {
console.log( this.anyChartConfig(ui.value) );
}
})
.each(function() {
var opt = $(this).data().uiSlider.options;
var vals = opt.max - opt.min;
for (var i = 0; i <= vals; i++) {
var el = $('<label>'+ ( value[i]["title"] ) +'</label>').css('left',(i/vals*100)+'%');
$( "#slider" ).append(el);
}
});
},
В первом console.log() он отображается правильно, но он второй console.log() он дает мне ошибку {Object не поддерживает свойство или метод anyChartConfig '}. А также я хочу получить значение и передать его функции после изменения,
this
внутри ползуна обратного вызова (change
) является другим объектом (это #slider
элемент), чем то, что было this
в uiSlider
методе.
Возможным решением является использование переменной замыкания self
как показано ниже
uiSlider: function(){
var arrLength = (this.cDat).length - 1,
value = this.cDat,
pieTitle = this.cDet,
config = this.anyChartConfig(), self = this;
console.log( this.anyChartConfig(2) );
$( "#slider" ).slider({
range: "min",
min: 0,
max: arrLength,
step: 1,
change: function ( event, ui ) {
console.log( self.anyChartConfig(ui.value) );
}
})
.each(function() {
var opt = $(this).data().uiSlider.options;
var vals = opt.max - opt.min;
for (var i = 0; i <= vals; i++) {
var el = $('<label>'+ ( value[i]["title"] ) +'</label>').css('left',(i/vals*100)+'%');
$( "#slider" ).append(el);
}
});
}
Зачем? Вероятно, вы можете больше узнать об этом и о переменных закрытия