我有一个有5个窗口的应用程序,当点击上面的选项卡时,它们会向窗口传递要加载的RSS的URL。这令人抓狂,它将让我从Appcelerator跳到PhoneGap。
这是跳船前的最后努力..........请告诉我,我做的事情很傻。如果在模拟器上有点迟钝,它可以正常工作,但在我的戴尔Streak 5上,这是令人抓狂的不一致。有时XML渲染(它总是以4状态返回),有些东西只是随着活动指示器的旋转而挂起。如果我在没有活动指示器的情况下重建很多次,窗户中就没有任何内容。没有错误可以说我能看到。
HEre是违规代码。请告诉我,我正在做一些让我开心的事情。
data = [];
//load RSS Feed
Ti.API.info('>>>> loading RSS feed '+url);
//Show Loading Animation
navActInd.show();
var xhr = Ti.Network.createHTTPClient();
xhr.timeout = 10000;
xhr.open('GET', url);
xhr.onload = function()
{
var xml1 = xhr.responseXML;
var items = xml1.documentElement.getElementsByTagName("item");
//Loop Through XML and Build Rows
for (var i = 0; i < items.length; i++) {
this_post_title = items.item(i).getElementsByTagName("title").item(0).text;
this_post_merchant = items.item(i).getElementsByTagName("category").item(0).text;
post_cid = items.item(i).getElementsByTagName("source").item(0).text;
var row = Ti.UI.createTableViewRow();
var post_title = Ti.UI.createLabel({text: this_post_title});
row.add(post_title);
row.thisSource = post_cid;
row.thisMerchant = this_post_merchant;
data.push(row);
}
navActInd.hide();
var tv = Titanium.UI.createTableView({
data: data,
top: 0,
width: 'auto',
height: 'auto'
});
//Add Table to Window
window.add(tv);
navActInd.hide();
答案 0 :(得分:0)
首先,你不应该两次隐藏navActInd。你还应该添加一个onerror函数来打印状态代码。
如果不查看您的xml文件,很难形成意见。
我理解你对钛的挫败感。关于它有很多令人沮丧的事情,因为构建这样一个框架非常复杂。我用钛制造了一个非常全面的应用程序,并且有很多这样的时刻,但是我发现解决所有问题的时间越少;)
答案 1 :(得分:0)
我看到类似的问题,当xml不是我所期望的时候,你应该在你的xmlparsing块周围放一个try catch块,看看是否抛出了错误
你应该为你的代码添加一个onError处理程序。
从复杂性的角度来看,您不需要标签来设置行的标题;这些行可以编辑
var row = Ti.UI.createTableViewRow();
var post_title = Ti.UI.createLabel({text: this_post_title});
row.add(post_title);
使用此行,尽可能使用rowClassName
var row = Ti.UI.createTableViewRow({title: this_post_title, className:'@row'});
row.add(post_title);
我还建议你看一下厨房水槽演示的完整例子。 https://github.com/appcelerator/KitchenSink/tree/master/KitchenSink