2012-06-07 54 views
1

我有頁腳三個選項卡重新發布數據:家居,促銷及活動。我實施了通知徽章,以便在數據庫中加載新的促銷時,移動頁面的頁腳顯示1,如果插入更多,則數字會實時增加。現在,比方說,如果我從主頁開始,並且我在促銷和活動選項卡上看到實時通知。但是,當我導航到「事件」選項卡時,通知會消失,但如果我單擊回到主頁選項卡,通知就會顯示出來。我已經單獨嘗試了「pageinit」和「pageshow」,並提供了其他stackoverflow問題中建議的測試警報消息。每次點擊標籤時都會顯示警報消息。但是,當我嘗試使用append或html進行修改時,它不會向我輸出通知標誌。我嘗試將id添加到家庭,促銷和事件的data-role =頁面,警報顯示出來,但append或html函數沒有按預期給我提供結果。我在這裏錯過了什麼?jQuery Mobile的不更新,或當導航離開

<div data-role="page"> 

     <div data-role="header"> 
      ........ 
     </div> 


     <div data-role="content"> 
       ....... 
     </div> 

     <div data-role="footer" data-position="fixed" > 
      <div data-role="navbar" > 
       <ul> 
            <!---- The notification badge from jquery script get appended in these IDs-----> 
           **<li><div id="home"></div>...........</li>** 
           **<li><div id="promotion"></div>......</li>** 
           **<li><div id="event"></div>..........</li>** 
      </div> 
     </div> 
    </div> 
+0

我真的很感謝你的幫助。如果我需要提供更多信息,請告訴我。 –

回答

0

我想,如果我的第一頁是主頁,jQuery Mobile的商店在其歷史上,和任何其他訪問的頁面將成爲AJAX調用。而且,我一直在通知徽章保存在他們所屬的頁面中。例如。如果正在添加新的促銷,它將被附加到promotion.mobile.erb,並且如果正在添加新事件,它將被附加到event.mobile.erb中的div元素。只有當前頁面是主頁時,我才能看到它。這是我早些時候的問題。

我如何解決它? 我從application.mobile.erb解開了我的頁腳和頁面元素,並將頁面ID添加到了家庭,促銷和活動頁面。然後,我向通知徽章所在的div元素添加了不同的ID。

  • 在home_page div元素,我加0(你可以選擇,使得它獨特的任何東西)
  • 在promotion_page div元素我在event_page加1和
  • 的div元素我加了2像下面的代碼...

    <div data-role="footer" data-position="fixed" > 
        <div data-role="navbar" > 
         <ul> 
              <!---- The notification badge from jquery script get appended in these IDs-----> 
             **<li><div id="home0"></div>...........</li>** 
             **<li><div id="promotion0"></div>......</li>** 
             **<li><div id="event0"></div>..........</li>** 
        </div> 
    </div> 
    

現在,當任何實時通知來了,把它添加到任何promotion0或EVENT0 div中,每當我們導航離去的,我們可以從該div舊標誌,並使用pageinit就像在下面的例子中它轉貼到導航頁div元素...

$('#promo_page').live('pageinit',function(event){ 
     $('#promotion2').badger(oldBadge0); 
     $('#event2').badger(oldBadge_e0); 
    });