2013-03-16 31 views
5

Ja próbuje dodać przycisk Facebook logowania do witryny przy użyciu dokumentacji w https://developers.facebook.com/docs/reference/plugins/login/Facebook Login Button użyciu angularjs

Teraz, ten przycisk jest wyświetlany w widoku. Widok jest ładowany tylko wtedy, gdy użytkownik wyraźnie zażąda zalogowania się do witryny.

Używam wersji HTML5. W kroku 1 poproszę o dołączenie pakietu JavaScript SDK - robię to natychmiast po tagu. Znajduje się na stronie głównej zawierającej dyrektywę ng-view.

Umieszczam kod, aby zrenderować przycisk logowania wewnątrz widoku. Problem polega na tym, że jeśli przejdę do widoku, klikając przycisk logowania na stronie głównej, widok nie wyświetla przycisku logowania FB. Jednak jeśli odświeżę stronę (tę, która zawiera widok logowania), przycisk wyświetli się.

Przenieśliłem kod JavaScript SDK również do widoku logowania - zarówno przed renderowaniem przycisku, jak i po nim, ale to również nie rozwiązuje problemu. Dopiero po odświeżeniu widoku logowania przycisk jest renderowany.

Więc
a) Albo muszę wiedzieć, dlaczego tak się dzieje i roztwór lub
b) Odśwież w angularjs; to znaczy, muszę znać sposób AngularJS, aby odświeżyć widok logowania przed renderowaniem, aby (I Hope) przycisk logowania został wyrenderowany.

+0

Proszę zaksięgować link do plunker/jsfiddle. – Stewie

Odpowiedz

11

Dzieje się tak, ponieważ Facebook renderuje całą stronę, aby znaleźć jej przyciski i inne elementy. Musisz ponownie uruchomić analizator składni po załadowaniu ngView.

Ponieważ nie wykonujesz manipulacji domem na kontrolerze, tutaj jest wersja dyrektywy.

angular.module("myApp", []).directive("fbLogin", function($rootScope) { 
    return function (scope, iElement, iAttrs) { 
     if (FB) { 
      FB.XFBML.parse(iElement[0]); 
     } 
    }; 
}; 
+1

BRILLIANT !! Walczyłem, żeby to pokazać w plunkeru i to jest wygaszaczem! Nie chciałem stworzyć dyrektywy, więc to, co zrobiłem, było w widoku zawierającym element div służący do renderowania przycisku logowania do FB, dodałem znacznik 'script' na końcu widoku z kodem' FB.XFBML.parse (); 'i to załatwiło sprawę! Wielkie dzięki! – user109187

+0

Czy masz rozwiązanie dla przycisku logowania Google Plus? Ten sam numer innej sieci społecznościowej ... – user109187

+0

Powinny być ręczne analizy, funkcja ładowania początkowego. To musi być zawarte w dokumentacji, musisz się przez nią przekopać. –

Powiązane problemy