2013-03-14 23 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(); 

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