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'}。而且我想获得值并在更改后将其传递给函数,
答案 0 :(得分:0)
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);
}
});
}
为什么呢?您可以了解有关this和closure variables
的更多信息