I am pulling in data from a Drupal JSON service and displaying in a tableview. Working great. When you click a row, the full node is displayed in a webview. Works good but I'd like to display the node in the app instead of a webview. I tweaked things and now when you click a row, a new page loads which gets the node with node.get service.
The issue I'm having is I want to pass the node ID to the new page to display its content. I've used the kitchen sink example to pass text to the page which works. I can pass '236' (a node ID) to view.nid = "236"; in page.js which will pull the node but I need to pass data[c].nid from each row so the correct node loads for each teaser.
How can I pass data[c].nid to another page?
Comments
Got it to pass the nid to
Got it to pass the nid to view.nid = " " but I have one issue. Its only sending the first node in the JSON service when I tap on any teaser. Also notice that its doing the same with the window title.
CODE
for (var c=0;c<data.length;c++)
{
// creates right arrow indicator
var row = Ti.UI.createTableViewRow();
row.rightImage = '../images/indicator.png';
if (e.rowData.url)
{
var win = Titanium.UI.createWindow({
url:e.rowData.url,
title:label.text,
barColor:'#919eab'
});
win.node = function(e)
{
var nodeid
nodeid = label.text
return nodeid
};
Titanium.UI.currentTab.open(win,{animated:true});
}
});
}
If I understand you right.
If I understand you right. You are only passing the first item from the list to your next .js file.
I have had this issue before. You need to pull the variable for each row.
something like
var label = Ti.UI.createLabel({
text: data[c].nid,
color: '#333333',
shadowColor:'#FFFFEF',
shadowOffset:{x:0,y:1},
textAlign:'left',
top:10,
left:10,
width:260,
height:60,
font:{fontWeight:'bold',fontSize:16}
});
if (Titanium.Platform.name == 'android') {
label.top = 10;
}
row.add(label);
row.nodeId = data[c]['nid']; // you need to define the node id for that row
row.url = 'page2.js';
Then....
var tableview = Titanium.UI.createTableView({
data:data,
style:Titanium.UI.iPhone.TableViewStyle.PLAIN,
backgroundColor:'white'
});
tableview.addEventListener('click',function(e)
{
Ti.API.info(e.rowData);
if (e.rowData.url)
{
var win = Titanium.UI.createWindow({
url:e.rowData.url,
title: e.rowData.label.text, // pass the title of the node by pulling the text from the label
passedId: e.rowData.nodeId // pass the node id from the row to the next .js file
});
Titanium.UI.currentTab.open(win,{animated:true});
}
});
win.add(tableview);
BTW, I am using D6 with the modified JSON from an earlier post by Sumitk. If you haven't checked out his post you should it is easy to use.
I think that should work.
Let me know if any of this helps.
what DRUPAL modules...
are you using. I am guessing D6 JSON services?