2011-07-15 83 views
0

我正在使用jQuery Mobile創建一個手機(顯然)網站。我有一個基於AJAX請求動態創建的項目列表。這效果很好!

接下來就是這些列表項需要鏈接到另一個「頁面」,這需要發送一個參數給它。

我正在使用的代碼是:

$("#cwCountries [data-role='listview'] a").live("click", function() { 
    var dataurl = $(this).data("url"); 
    if(dataurl != null) { 
     $.mobile.changePage($("#cwCountrySpec"), { 
      type: "post", 
      data: dataurl 
     }); 
    } 
}); 

這確實發生了改變的cwCountrySpec頁面如你所期望。正如你所看到的,我使用$.mobile.changePage中的第二個參數來傳遞數據,我希望我已經存在的頁面能夠接收和使用。

我可以用這個代碼攔截變化cwCountrySpec

$("#cwCountrySpec").live('pagebeforecreate', function(event) { 
    console.log(event); 
}); 

但是,當我檢查控制檯中,data值返回爲undefined

這是可能的,如果是這樣,如何?

編輯 嗯,這是一個恥辱......

我剛剛檢查jQuery Mobile的方法文檔,並且聲明,

使用,只有當「到」 changePage的說法()是一個URL。

這很糟糕。那麼我怎麼才能在頁面更改之間發送數據呢?

回答

0

嗯,這是一個恥辱......

我剛剛檢查jQuery Mobile的方法文檔,並且聲明,

使用,只有當「到」 changePage(的說法)是URL。

這很糟糕。那麼我怎麼才能在頁面更改之間發送數據呢?

編輯:似乎開發人員不希望包括routes作爲框架的一部分,不像Sencha。

+1

這不是一個答案。將其作爲編輯發佈。恥辱。 –

1

如何將'dataurl'值設置爲全局變量,然後在加載'#cwCountrySpec'頁面時拾取該全局變量的值。

 
var tmp_data; 
$("#cwCountries [data-role='listview'] a").live("click", function() { 
    var dataurl = $(this).data("url"); 
    if(dataurl != null) { 
     tmp_data = dataurl; 
     $.mobile.changePage($("#cwCountrySpec")); 
    } 
}); 
 
$("#cwCountrySpec").live('pagebeforeshow', function() { 
    console.log(tmp_data); 
}); 

---- ----編輯

當加載信息到新的頁面,你可以檢查,看看是否該頁面爲空或不那麼該頁面只加載一次。

 
$("#cwCountrySpec").live('pagebeforeshow', function() { 
    if ($("#cwCountrySpec div[data-role='content']").is(':empty')) { 
     $("#cwCountrySpec div[data-role='content']").load(tmp_data); 
    } 
    console.log(tmp_data); 
}); 
+0

這就是我以前的做法(我正在討論我的第三次修訂版),但我希望能夠在頁面之間存儲狀態,並將它們鏈接回它們。我以前應該說過,但我很想能夠鏈接類似於'/#cwCountry/code'的頁面:) – James

+0

將數據加載到頁面容器中時,可以檢查它是否爲空,並且只有在數據爲空時才加載數據......請參閱上面的編輯。 – Jasper

+0

我討厭全局變量,但這是做這項工作。 – Dofs