2013-03-14 44 views
1

我有一個用angularjs編寫的facebook應用程序,它的所有功能都像一個魅力 除了事實上,當我去通過應用程序的各種鏈接 如http:// [baseurl] /#/item/25這並不反映導航欄中顯示的url仍然存在http://apps.facebook.com/MyTestApp/處理url槽iframe

所以我在這裏需要的東西是能夠反映包含我的應用程序的iframe之外的angularjs路由。

+0

Facebook應用程序駐留在iframe中。我不確定你是怎麼想到可以將你的iframe文檔url與父頁面的url「同步」的,那就是facebook? – Stewie 2013-03-14 16:22:53

+2

我想你必須通過管理瀏覽器地址欄上的hashbang路徑來手動處理它。這是我發現的第一個StackOverflow問題,它解決了如何執行此操作,基本上*我認爲*您會將URL的哈希部分從角度的$ location服務傳輸到javascript位置對象,然後取消瀏覽器的導航。 中的問題的示例使用的jquery http://stackoverflow.com/questions/2366481/attaching-hashtag-to-url-with-javascript 這裏是關於角 HTTP位置文檔://docs.angularjs .ORG /引導/ dev_guide.services。$位置 – Jason 2013-03-14 17:11:41

回答

0

最終我儘快通過我的土地上的index.php在URL解析東西的參數一樣

http://apps.facebook.com/MyTestApp/index.php?p=goto#item/48

因此,通過一隻手,管理的情況下,通過PHP我檢查$ _GET ['vairable']並將其用作觸發器,以便在包含angluar之前,讓哈希字符串提供一個直接執行的javascript變量。因此,只要mainController(與索引關聯的角度控制器)執行,具有該路徑的變量就已經實例化。 此時角度檢測到有一個變量強制路徑到達某處並且它將在那裏獲得路由。

這裏的一些代碼

在標籤中的index.php,jQuery的LIB納入後馬上 前右側角包括

<script language="javascript" type="text/javascript"> 
    var redirect_to = null; 

    $(function() { 
     <?php 
       // redirecting rulez 
      if(isset($_GET['p'])) { 
       ?> 
        redirect_to = window.parent.location.hash.substring(1); 
       <?php 
      } 
     ?> 

    }); 
</script> 

的mainControl.js那就是被打中了一個人您加載的index.php

if(redirect_to != null) 
    $location.path(redirect_to); 

在其他控制器的時間

if(redirect_to != null) 
    window.parent.location.hash = "#" + $location.path(); 

重複所有其他控制器。享受