Javascript 如何动态设置和调整JS页面';Facebook共享的meta og标签?

Javascript 如何动态设置和调整JS页面';Facebook共享的meta og标签?,javascript,html,angularjs,facebook,facebook-graph-api,Javascript,Html,Angularjs,Facebook,Facebook Graph Api,这个问题与我几天前提出的问题密切相关 我正在构建一个angularJS web应用程序。我目前正在尝试使用该模块,允许该web应用程序生成页面标题和元标记的动态条目,以便“无论何时用户从我的web应用程序发布链接,Facebook都能显示图像、标题和描述。我正在使用帮助我解决这个问题 但这对我不起作用。以下是我用于web应用启动页的状态: $stateProvider.state('splash', { url: '/', templateUrl: '

这个问题与我几天前提出的问题密切相关

我正在构建一个angularJS web应用程序。我目前正在尝试使用该模块,允许该web应用程序生成页面标题和元标记的动态条目,以便“无论何时用户从我的web应用程序发布链接,Facebook都能显示图像、标题和描述。我正在使用帮助我解决这个问题

但这对我不起作用。以下是我用于web应用启动页的状态:

  $stateProvider.state('splash', {
          url: '/',
          templateUrl: 'html/splash.html',
          controller: 'SplashCtrl',
          data: {meta: {'title': 'XXXXXXXXXXXX',
                        'description': 'YYYYYYYYYYYY'}}});
这是我的控制器:

myApp.controller('SplashCtrl', function($scope, ngMeta) {
    var self = this;
    console.log('self = ', self);

    ngMeta.setTag('description', 'DDDDDDDD');
这是我的

这是我的模板文件,
splash.html
,在状态声明中引用:

<div ng-controller="SplashCtrl as splashCtrl">
    HELLO WORLD
</div>

你好,世界
当我擦掉这个启动页面时,看看Facebook的调试器报告了什么(仅供参考,我的私人信息已被擦掉):

为什么我在SplashCtrl中设置的描述(
'DDDDDDDD'
)没有出现在Facebook的scraper中?我怎样才能把它修好呢

顺便说一句,我已经使用
run()
块成功初始化了ngMeta。我知道它在工作,因为当我加载这个页面时,
index.html
中的
{{ngMeta.title}}
正确地显示为
aaaaaa


所以ngMeta.setTitle()确实有效。那么如何设置和访问其他属性,如描述、图像等?

所有元标记都绑定良好,您可以通过查看页面来查看

我认为facebook工具读取的是你页面的源代码,而不是初始化的angular应用程序(就像你在chrome中按CTRL+U键查看源代码一样,你会看到数据没有模板化)

这对于共享来自angular应用程序的内容并不重要。Facebook将注意读取绑定值,而不是范围变量

但是,如果您不希望源代码中有任何范围变量,
答案可能是解决方案

您是否使用运行块初始化了ngMeta?是。我有。我知道它在工作,因为当我加载这个页面时,来自
index.html
{{ngMeta.title}}
正确地显示为
AAAAA
嗨,删除状态中的[description],你不能为当前状态设置两个描述,这是一个绑定。Maher,我做了。然而,这没有任何区别。你可以在这里看到自己的网站:Facebook scraper不关心任何客户端JavaScript。它只关心服务器在请求URL时返回的HTML代码;该HTML代码包含OG元数据。