2013-03-14 3 views
1

У меня есть приложение facebook, написанное в angularjs, все работает как шарм , за исключением того факта, что, поскольку я прохожу через различные ссылки приложения , такие как http: // [baseurl]/#/item/25, это не отражает URL-адрес, отображаемый в навигационной панели, которая все еще остается http://apps.facebook.com/MyTestApp/handle url trough iframe

Таким образом, мне нужна была бы возможность отражать маршрутизацию angularjs вне iframe, которая содержит мое приложение.

+0

Facebook-приложения находятся внутри iframe. Я не уверен, как вы предположили, что можете «синхронизировать» ваш URL-адрес документа iframe с URL-адресом родительской страницы, то есть facebook? – Stewie

+2

Я думаю, вам придется обрабатывать его вручную, управляя путем hashbang в адресной строке браузера. Это первый вопрос StackOverflow, который я нашел, который обращается к тому, как это сделать, в основном * я думаю * вы передадите хэш-часть URL-адреса из службы углового '$ location' в объект' location' javascript и затем отмените навигацию браузера , Пример в вопросе использует Jquery http://stackoverflow.com/questions/2366481/attaching-hashtag-to-url-with-javascript Здесь документация местоположение на угловой HTTP: //docs.angularjs .org/гид/dev_guide.services. $ расположение – Jason

ответ

0

В конце концов мне удалось ситуацию путем анализа параметров в URL-адрес что-то вроде

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

так, одной рукой, как только я землю на index.php, с помощью PHP Я проверяю $ _GET ['vairable'] и использую это как триггер, чтобы получить хэш-строку для подачи переменной 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(); 

повторить все остальные контроллеры.