5

https://developers.facebook.com/docs/reference/plugins/login/のドキュメントを使用して、自分の Web サイトに Facebook ログイン ボタンを追加しようとしています。

これで、このボタンがビューに表示されます。ビューは、ユーザーが Web サイトへのログインを明示的に要求した場合にのみ読み込まれます。

HTML5版を使用しています。ステップ 1 では、Javascript SDK を含めるよう求められます。これは、タグの直後に行います。ng-viewこれは、ディレクティブ を含むメイン ページにあります。

ビュー内にログイン ボタンをレンダリングするコードを配置します。問題は、メイン ページのログイン ボタンをクリックしてビューに移動すると、ビューに FB ログイン ボタンが表示されないことです。ただし、ページ (ログイン ビューを含むページ) を更新すると、ボタンがレンダリングされます。

ボタンがレンダリングされる前と後の両方で、Javascript SDK のコードもログイン ビューに移動しましたが、それでも問題は解決しません。ログイン ビューを更新する場合にのみ、ボタンがレンダリングされます。

したがって、
a) これが発生する理由と解決策を知る必要があるか、
b) AngularJS で更新する必要があります。つまり、レンダリングされる前にログイン ビューを更新する AngularJS の方法を知って、ログイン ボタンがレンダリングされるようにする必要があります。

4

1 に答える 1

11

これは、Facebook がボタンなどを見つけるためにページ全体を 1 回レンダリングするためです。ngView をロードした後、パーサーを再実行する必要があります。

コントローラーで dom 操作を行ってはならないため、ここではディレクティブ バージョンを示します。

angular.module("myApp", []).directive("fbLogin", function($rootScope) {
    return function (scope, iElement, iAttrs) {
        if (FB) {
            FB.XFBML.parse(iElement[0]);
        }
    };
};
于 2013-03-16T18:22:40.823 に答える