FB Die Schaltfläche erscheint nur einmal - beim ersten Laden meiner AngularJS-Ansicht

7

Ich versuche, den FB-Like-Button auf meiner Single-Page-Site auf Angular JS zu platzieren. Die Schaltfläche like muss in einer Ansicht (anders als index.html) angezeigt werden, die von einem Controller angezeigt wird. Aber der gleiche Knopf erscheint nur zum ersten Mal, wenn ich diese bestimmte Ansicht lade. Die Schaltfläche wird nicht angezeigt, wenn ich nach dem Besuch einer anderen Ansicht zurückkomme. Unten ist der Code, der FB SDK im Controller für die Ansicht lädt -

  

(Funktion (d, s, id))       var js, fjs = d.getElementsByTagName (s) [0];       if (d.getElementById (id)) {
      Rückkehr;       }       js = d.createElement (e); js.id = id;       js.src="//connect.facebook.net/en_US/all.js#xfbml=1";       fjs.parentNode.insertBefore (js, fjs);       } (Dokument, 'Skript', 'Facebook-jssdk'));

index.html hat den folgenden Code -

  

& lt; Körper ng-controller="mainController" & gt;

     

& lt; div id="fb-Wurzel" & gt;

myView.html

  

& lt; div class="fb-ähnlich" data-href="mySite.com / {{ProductID}}" Daten- & gt; layout="Standard" data-action="Gefällt mir" data-show-faces="false" data-share="true" & gt;

Ich habe verschiedene Methoden wie die FB.XFBML.Parse () versucht, das Skript-Tag für FB SDK entfernen und fügen Sie es in jeder Ladung (mit der Hoffnung, dass es wie das erste Mal funktioniert), versucht mit den Anweisungen , das fb-root-div in verschiedene Ansichten platzierend und jetzt bin ich ahnungslos: |

Ich denke, das Problem liegt darin, das SDK beim erneuten Aufrufen der Ansicht zu laden oder zu aktualisieren, aber ich bin mir nicht sicher.

Ich freue mich über jede Eingabe, die mir helfen wird voranzukommen und bitte lassen Sie es mich wissen, wenn Sie weitere Informationen benötigen.

Danke,  Sam.

    
Sam 02.12.2013, 21:50
quelle

5 Antworten

10

Ich glaube, ich habe die Lösung gefunden.

Am Anfang des Widgetskripts einstellen FB = null; und entfernen Sie die "if (d.getElementById (id)) return;"

Es sollte so aussehen:

%Vor%     
user2912405 30.12.2013, 15:48
quelle
9

Die akzeptierte Antwort von user2912405 ist perfekt. Ich wollte nur hinzufügen, wenn Sie AngularJS verwenden

Sie sollten verwenden:

%Vor%

Um die Schaltflächen jedes Mal neu zu laden, wenn wir die Ansicht ändern, z. B. wenn wir einem Link folgen

    
Gabo Lato 22.04.2014 21:05
quelle
2

akzeptierte Antwort funktionierte für mich, nach viel Versuch einen Fehler (fb Wurzel wurde weggelassen). Hier ist das vollständige Snippet, das Sie sehen können:

%Vor%

stellen Sie außerdem sicher, dass Sie den Code von der Indexseite löschen

    
estebanrv 23.08.2014 02:03
quelle
0

Ich persönlich habe so etwas gefunden. Ich habe eine Komponente in Winkel 1.5. In der Indexdatei gibt es klassisches Markup aus der Dokumentation und innerhalb der Komponente

%Vor%

Der wichtige Teil ist die FB.XFBML.parse (), die das erneute Rendern der Schaltfläche

aufruft     
Zdenek Hatak 26.07.2016 11:29
quelle
0

Die angenommene Antwort funktionierte bei meinem Angular 5 Projekt nicht.

Das Hinzufügen zu meiner Komponentenklasse hat funktioniert:

%Vor%     
gagikm 10.01.2018 22:35
quelle