1

我需要request在每个页面上检查一些内容并在数据正确时加载小部件。

问题很奇怪 - 我第二次重新加载页面时加载了两次小部件。

var widgets = require("widget");
var self = require("self");
var tabs = require("tabs").on("ready", start_script);
var request = require("request").Request;

function start_script(argument) 
{
    request({
        // checking something
        url: "http://localhost/check.php",
        onComplete: function (response) 
        {
            if ( typeof widget == "undefined" )
            {
                // make widget
                var widget = widgets.Widget({
                    id: "xxxxxxxx",
                    label: "zzzzz",
                    contentURL: self.data.url("http://www.google.com/favicon.ico")
                });
            }
        }
    }).get();
}

它适用于第一页。重新加载后,它会抛出错误:This widget ID is already used: xxxxxxxx.

为什么它会第二次加载小部件,即使我有if ( typeof widget == "undefined" )

如果我没有request,一切都很好。发生了什么request变化?

4

1 回答 1

3

因为变量在条件widget中尚未定义/未知。if您需要使用适当的范围。

你可以试试:

var widgets = require("widget");
var self = require("self");
var tabs = require("tabs").on("ready", start_script);
var request = require("request").Request;
var widget; //define widget here so that it is visible in the if condition.

function start_script(argument) 
{
    request({
        // checking something
        url: "http://localhost/check.php",
        onComplete: function (response) 
        {
            if ( typeof widget == "undefined" )  //using the variable here
            {
                // make widget
                widget = widgets.Widget({
                    id: "xxxxxxxx",
                    label: "zzzzz",
                    contentURL: self.data.url("http://www.google.com/favicon.ico")
                });
            }
        }
    }).get();
}

或者

xxxxxxxx检查条件内是否存在具有 id 的小部件if

于 2013-04-28T13:39:06.393 回答