我有一个用 angularjs 编写的 facebook 应用程序,除了当我浏览应用程序的各种链接(例如http://[baseurl]/#/item/25 )时,这一切都像一个魅力导航栏中显示的 url 仍然是http://apps.facebook.com/MyTestApp/
所以我在这里需要的是能够在包含我的应用程序的 iframe 之外反映 angularjs 路由。
我有一个用 angularjs 编写的 facebook 应用程序,除了当我浏览应用程序的各种链接(例如http://[baseurl]/#/item/25 )时,这一切都像一个魅力导航栏中显示的 url 仍然是http://apps.facebook.com/MyTestApp/
所以我在这里需要的是能够在包含我的应用程序的 iframe 之外反映 angularjs 路由。
最后,我通过解析 url 中的参数来管理这种情况,例如
http://apps.facebook.com/MyTestApp/index.php?p=goto#item/48
因此,一方面,一旦我登陆 index.php,我通过 php 检查 $_GET['vairable'] 并将其用作触发器来获取哈希字符串以提供直接执行的 javascript 变量, 在包括角度之前。因此,一旦 mainController(与索引关联的角度控制器)被执行,带有路径的变量就已经被实例化了。此时 angular 检测到有一个变量强制路径去某个地方,它将在那里获得路由。
这是一些代码
标记中的 index.php,就在 jquery lib 包含之后和 angular 包含之前
<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();
对所有其他控制器重复。请享用