2013-10-21 91 views
0
  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()它給我的錯誤{對象不支持屬性或方法'anyChartConfig'}。同時,我想要得到的值和變化後,傳遞給函數,我怎樣才能將值傳遞給函數事件

回答

0

this滑塊回調(change)內是不同的對象(它是#slider元素)比是在uiSlider方法this

一種可能的解決方案是使用封閉可變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); 
     } 
    });            
} 

爲什麼呢?也許你可以更多地瞭解thisclosure variables

+0

仍然我得到了同樣的錯誤:( –

+0

它的最後工作!:)你能解釋它爲什麼我需要聲明一個變量self = this? –

相關問題