2013-04-28 57 views
1

我需要在每個頁面上檢查與request的內容,並在數據正確時加載小部件。當使用「請求」時,「此小部件ID已被使用」

問題很奇怪 - 第二次加載頁面時,窗口部件會被加載兩次。

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更改了什麼?

+0

由於'小部件'對象在'if'條件中尚未定義/未知。 – 2013-04-28 13:36:40

回答

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(); 
} 

檢查小部件的存在與ID xxxxxxxxif條件內。

+0

總是忘記範圍! – Qiao 2013-04-28 13:46:40

相關問題