2012-05-11 2 views
1

Я делаю прокручиваемое меню, используя обычный JS.Titanium mobile - addEventListener на вид

Элемент меню представляет собой представление, которое содержит 2 других компонента: imageView для значка и метка для текста этого меню.

Компетентность странная и не то же самое на симуляторе android и ios.

На андроиде, если щелчок сделан на ярлыке или на изображении, это дает: «uncaught TypeError: Can not Read property ...» На iphone это просто ничего не запускает.

Если я нахожусь в другом месте (все еще в элементе вида), но не на изображении или на лабильном, например, на краю, это работает просто отлично!

вот код:

функция menuIcons (itemTab) {

var menuMain = Ti.UI.createView({ 
    layout : 'vertical', 
    backgroundColor : '#333333', 
    height : 125, 
    bottom : 10, 
    left : 10, 
    right : 10, 
    borderRadius : 5.0 
}); 

var menuFirstLine = Ti.UI.createScrollView({ 
    scrollType : 'horizontal', 
    contentHeight : 120, 
    contentWidth : 'auto', 
    layout : 'horizontal', 
    height : 120, 
    marginLeft : 5 
}); 

var items = []; 
var menuIconsItem = require('view/module/menuIconsItem'); 

for(var i in itemTab) { 
    var page = itemTab[i].page; 

    items[i] = new menuIconsItem(itemTab[i]); 

    (function(itemsEvent) { 
     itemsEvent.id = itemTab[i].id; 
     itemsEvent.addEventListener('click', function(e) { 

      Ti.App.fireEvent('main_menu_' + itemsEvent.id, { 
       id : e.source.id 
      }); 
     }) 
    })(items[i]); 

    menuFirstLine.add(items[i]); 
} 
menuMain.add(menuFirstLine); 
return menuMain; 

}

module.exports = menuIcons;

и код из элементов, которые требуется (вар menuIconsItem = требуется ('Вид/модуль/menuIconsItem');):

функция menuIconsItem (пункт) {

// path for images on Android besoin de centraliser tout ca 
var pathImages = ''; 

var itemImage = Ti.UI.createImageView({ 
    image : item.imageLink, 
    width : 64, 
    height : 64, 
    top : 15 
}); 

var itemLabel = Ti.UI.createLabel({ 
    color : '#afafaf', 
    text : item.text, 
    font : { 
     textAlign : 'center' 
    }, 
    height : 40, 
    top : 80 
}); 

var menuItem = Ti.UI.createView({ 
    width : 120, 
    height : 120, 
    backgroundColor : '#424242', 
    top : 5, 
    left : 5 
}); 

menuItem.add(itemImage); 
menuItem.add(itemLabel); 

return menuItem; 

}

module.exports = menuIconsItem;

ответ

2

Вы также должны установить идентификатор для метки и изображения.

+0

Вы гордитесь чуваком, теперь это работает отлично! Отличная помощь, большое спасибо! – geoffrey

Смежные вопросы