5

我正在尝试使用https://developers.facebook.com/docs/reference/plugins/login/上的文档将 Facebook 登录按钮添加到我的网站

现在,此按钮显示在视图中。仅当用户明确请求登录网站时才会加载视图。

我正在使用 HTML5 版本。在第 1 步中,我被要求包含 Javascript SDK - 我在标记之后立即执行此操作。ng-view它位于包含该指令 的主页中。

我放置代码以在视图中呈现登录按钮。问题是,如果我通过单击主页中的登录按钮导航到视图,则视图不会呈现 FB 登录按钮。但是,如果我刷新页面(包含登录视图的页面),按钮就会呈现。

我也将 Javascript SDK 的代码移到了登录视图中——在呈现按钮之前和之后,但这也不能解决问题。只有在刷新登录视图时,才会呈现按钮。

所以,
a)要么我需要知道为什么会发生这种情况和解决方案,要么
b)在 AngularJS 中刷新;也就是说,我需要知道 AngularJS 在渲染之前刷新登录视图的方式,以便(我希望)渲染登录按钮。

4

1 回答 1

11

这是因为 Facebook 渲染整个页面一次以找到它的按钮和内容。加载 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 回答