2012-11-01 47 views
0

我面臨這樣的問題,我動態生成從項目(串)的陣列滑塊,我使用對象來動態創建變量,然後添加一個事件監聽器來我剛創建的變量,但它不會工作。將活動添加到動態生成的滑塊上鈦SDK

EDITED:

可變itemsObject[labelValue]檢測到改變事件時,它不改變其文本值。

var items = ['Love', 
     'Angry', 
     'Jealous', 
     'Happiness', 
     'Understanding']; 


//all the controls on this view     
var itemsObject = {}; 


var scrollView = Titanium.UI.createScrollView({ 
    contentWidth:'auto', 
    contentHeight:'auto', 
    top:0, 
    showVerticalScrollIndicator:true, 
    showHorizontalScrollIndicator:false, 
    touchEnabled: true 
}); 

var viewInsideScrollView = Ti.UI.createView({ 
    width:'310dp', 
    height:'auto', 
    top:0, 
    touchEnabled:false 
}); 

scrollView.add(viewInsideScrollView); 


var fromTopItem =30, 
    fromTopSlider=50, 
    fromTopLabelValue =25; 

for(i in items){ 

    var label = items[i] + 'Label'; 
    //item name 
    itemsObject[label] = new Ti.UI.createLabel({ 
     text: items[i], 
     color: '#ffffff', 
     top:fromTopItem, 
     height:'auto', 
     width:'auto' 
    }); 

    fromTopItem+=70; 

    var slider = items[i] + 'Slider'; 

    //slider control 
    itemsObject[slider] = Titanium.UI.createSlider({ 
     top:fromTopSlider, 
     min: 0, 
     max: 5, 
     minRange: 0, 
     maxRange:5, 
     width: '95%', 
     value: parseInt(Math.random() * (5 - 0) + 0) //values from 0 to 5 
    }); 

    fromTopSlider+=70; 

    var labelValue = items[i] + 'LabelValue'; 

    //value selected 
    itemsObject[labelValue] = new Ti.UI.createLabel({ 
     text: itemsObject[slider].value, 
     color: '#ffffff', 
     top:fromTopLabelValue, 
     left:285, 
     height:'auto', 
     width:'auto', 
     font:{ 
      fontSize:24, 
      fontWeight: 'bold' 
     } 
    }); 

    fromTopLabelValue+= 70; 

    //listener 
    itemsObject[slider].addEventListener('change', function(e){ 
     itemsObject[labelValue].text = parseInt(e.value); 
    }); 

//adding to the view 
    viewInsideScrollView.add(itemsObject[label]); 
    viewInsideScrollView.add(itemsObject[labelValue]); 
    viewInsideScrollView.add(itemsObject[slider]); 

} 



self.add(scrollView); 
+1

究竟是什麼不起作用? –

+0

可變itemsObject [labelValue]當檢測到改變事件時,它不改變其文本值。 – Felix

回答

0

我解決了它,這是一個範圍問題,所以我把控件創建放在一個函數中,然後用循環調用該函數。