2

嗨,我正在使用钛工作室进行 Android 应用程序开发。我开发了小型应用程序。我的问题是我无法访问在 xhr.on 加载中定义的变量。我使用了以下代码:

xhr.onload = function()
{
var json = this.responseText;
var to_array = JSON.parse(json);
var to_count = to_array.length;
};

我想在 onload 函数之外访问 to_count 和 to_array 并将其传递给另一个子窗口。为此,我使用了以下代码:

var feedWin = Titanium.UI.createWindow({
    url:'home/feed.js'
});//alert(to_count);
feedwin.to_array = to_array;
feedwin.to_count = to_count; 
4

3 回答 3

1

XHR 客户端默认是异步的,这意味着代码将在 XHR 运行时继续执行。如果您的代码依赖于您的 XHR 完成,那么您将需要从 onload 函数中调用该代码,或者通过添加“false”作为第三个参数来强制 XHR 同步xhr.send()(我发现第一个选项是更可靠的选项,并且更符合 Titanium 的期望/感觉是最佳实践,仅供参考)。

于 2011-11-02T14:32:59.420 回答
0

完成此操作的最佳方法是feedWinonload. 因此,以下两个片段之一应该可以工作:

xhr.onload = function()
{
    var json = this.responseText,
        feedWin = Titanium.UI.createWindow({
            url:'home/feed.js'
        });//alert(to_count);

    feedWin.to_array = JSON.parse(json);
    feedWinto_count = to_array.length;
};

或者

var feedWin = Titanium.UI.createWindow({
        url:'home/feed.js'
    });

xhr.onload = function()
{
    var json = this.responseText,

    feedWin.to_array = JSON.parse(json);
    feedWinto_count = to_array.length;
};

我不熟悉钛,所以我不知道细节,但这是我最好的猜测。

于 2011-11-02T14:39:37.683 回答
-1

我对 Titanium 不是很熟悉,但是对于声明范围,我认为这是在函数之外使用它们所需要做的。

var to_array;
var to_count;


xhr.onload = function()
{
var json = this.responseText;
to_array = JSON.parse(json);
to_count = to_array.length;
};
于 2011-09-13T11:26:03.913 回答