gpt4 book ai didi

Facebook 评论插件 Angularjs

转载 作者:行者123 更新时间:2023-11-30 05:26:25 25 4
gpt4 key购买 nike

在我的 AngularJS 应用程序中添加 facebook 评论插件时,我遇到了一个奇怪的错误。应用页面的简化结构是

<html ng-app="myapp">
<head>
...
</head>
<body>
<div>
...
</div>
<div ng-view></div>
...
</body>
</html>

在 ng-view 中加载带有 fb 评论框的页面。包含fb评论框的页面结构如下

<div id="fb-comment-box>
<div class="fb-comments" data-href="http://mydomain.com/page/{{ page.id }}" data-numposts="5" data-colorsheme="light"></div>
</div>

page 是来自 Controller 的 angularjs 作用域变量。当我在浏览器中加载此页面并检查元素时。它显示了正确的页面 ID,即 data-href 是

data-href = "http://mydomain.com/page/2"

但在fb评论框下方,Facebook显示以下错误

Warning: http://mydomain.com/page/%7B%7B%20page.id%7D%7D is unreachable.

我可以看到 angularJS 范围变量没有绑定(bind)。有谁知道如何解决这个问题?

最佳答案

这可能是因为 FB 功能在 Angular 能够更改 data-href 属性之前启动。

指令似乎是一个不错的选择:

您基本上需要在Angular 可以提供正确的URL 后创建评论框。
因为这涉及异步 DOM 操作,您需要使用 FB.XFBML.parse() 让 FB 在 data-href 属性更改后处理评论框。

指令:

.directive('dynFbCommentBox', function () {
function createHTML(href, numposts, colorscheme) {
return '<div class="fb-comments" ' +
'data-href="' + href + '" ' +
'data-numposts="' + numposts + '" ' +
'data-colorsheme="' + colorscheme + '">' +
'</div>';
}

return {
restrict: 'A',
scope: {},
link: function postLink(scope, elem, attrs) {
attrs.$observe('pageHref', function (newValue) {
var href = newValue;
var numposts = attrs.numposts || 5;
var colorscheme = attrs.colorscheme || 'light';

elem.html(createHTML(href, numposts, colorscheme));
FB.XFBML.parse(elem[0]);
});
}
};
});

HTML:

<div id="fb-comment-box" dyn-fb-comment-box
page-href="https://example.com/page/{{page.id}}"
numposts="5"
colorscheme="light">
</div>

<子>注意:
该指令的作用域将不断观察 page-href 属性的变化并更新评论框。您可以更改它以满足您的需要(例如,还可以观察其他属性的变化或绑定(bind)一次并停止观察)。


另请参阅此 short demo .

关于Facebook 评论插件 Angularjs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23516305/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com