Привет, я новичок в Titanium, и в моем проекте я перебираю некоторые данные JSON, которые служат для заголовков и контента на странице приложения. У меня есть эта функция:
Titanium - проблема с контентом и петлями
xhr.onload = function() {
try {
var myPages = JSON.parse(this.responseText);
for (var c=0;c<myPages.length;c++){
var title = myPages[c].title; // page title
var content = myPages[c].content; // page content
Я добавил свои страницы званий TableViewRow в качестве метки:
var row = Ti.UI.createTableViewRow({hasChild:true,height:Ti.UI.SIZE,backgroundColor:bgcolor});
// Create a vertical layout view to hold all the titles
var post_view = Ti.UI.createView({
height: Ti.UI.SIZE,
layout:'vertical',
left:5,
etc..
});
// Create article titles
var label_title = Ti.UI.createLabel({
text:title,
left:5,
etc...
});
// Add the article titles to the view
post_view.add(label_title);
// Add the vertical layout view to the row
row.add(post_view);
row.className = 'item'+c;
data[c] = row;
Это все работает отлично, я получаю таблицу с названиями страниц в каждой строке, но когда пользователь нажимает заголовок, я хочу, чтобы приложение открыло новый вид/окно, чтобы отобразить содержимое соответствующих ng страница. Здесь начинается моя проблема!
Я добавил эту функцию, чтобы попытаться справиться с этой ситуацией:
// Add an event listener to the rows
row.addEventListener('click', function(){
Titanium.API.info('row has been clicked');
// Create view for article content
var articleView = Titanium.UI.createView({
height: Ti.UI.SIZE,
layout:'vertical',
left:5,
etc..
});
var t = Ti.UI.iPhone.AnimationStyle.FLIP_FROM_LEFT;
win.animate({view:articleView,transition:t});
var articleViewContent = Ti.UI.createLabel({
text:content,
left:5,
etc..
});
// Add the content to the view
articleView.add(articleViewContent);
});
}
// Create the tableView and add it to the window.
var tableview = Titanium.UI.createTableView({data:data,minRowHeight:58});
win.add(tableview);
}
catch(E){
alert(E);
}
};
я могу получить ответ на ввод названия Нажмите, чтобы показать в консоли, но я не могу понять, как вызовите соответствующий контент в новом представлении. Я думаю, что счетчик должен иметь это хранилище (с момента создания названий), но не знаю, как получить к нему доступ.
Я немного потерялся и чувствую, что я могу испортить некоторые из основ. Я относительно новичок в JavaScript, поэтому, пожалуйста, извините за любые ошибки! Было бы здорово получить некоторые советы, которые помогут мне улучшить!
(я добавил «и т.п ..» в коде, чтобы сократить вещи)
Это работало отлично, спасибо за вашу помощь Ed. Я рад, что не был слишком * слишком далеко! Я также не был на 100% уверен, должен ли я иметь функцию row.addEventListener внутри цикла, но все это, кажется, работает хорошо. – niallobr
@niallobr - без проблем, рад помочь. Обратите внимание, что объект события может быть немного похож на Android. Я никогда не мог найти хорошую документацию относительно того, как структурированы все объекты событий. Мне всегда приходится проверять его с помощью 'Ti.API.info', чтобы узнать, как получить доступ к тому, что мне нужно от него. –