属性绑定不适用于元数据

时间:2017-10-12 07:33:27

标签: javascript html angularjs angularjs-scope

由于某种原因,我无法获得头元素中元素属性的绑定。令人惊讶的是,相同的绑定对head元素中的元素起作用。

我已经粘贴了我在下面使用的代码。 title元素被正确绑定,但相同的绑定不适用于meta属性=" og:title"元件。我已尝试过内容=" {{var}}"和ng-attr-content =" {{var}}"。任何人都可以告诉我为什么会发生这种情况以及如何解决这个问题?

我在Chrome开发者控制台中看到以下内容:

chrome developers console

的index.html:

<!DOCTYPE html>
<html ng-app="test">
  <head>
    <title ng-bind="documentTitle"></title>

    <meta property="og:title" ng-attr-content="{{ documentTitle }}" />
    <meta name="description" ng-if="documentDescription" ng-attr-content="{{ documentDescription }}" />
    <meta name="fragment" content="!">
    <meta name="prerender-status-code" ng-attr-content="{{statusCode}}">

    <base href="/" />

    {% include 'stylesheets.html' %}
  </head>

  <body>
    {% include 'javascripts.html' %}
  </body>
</html>

test.js:

function run($http, $locale, $rootScope, $route, Head) {
  $rootScope.$on('$routeChangeSuccess', function() {
    Head.setTitle($route.current.meta.title);
    Head.setDescription($route.current.meta.description);
    Head.setStatusCode('200');
  });
}

主管服务:

(function ($, _) {
  'use strict';

  angular
    .module('test.utils.services')
    .factory('Head', Head);

  Head.$inject = ['$rootScope'];

  function Head($rootScope) {
    var Head = {
      setStatusCode: setStatusCode,
      setTitle: setTitle,
      setDescription: setDescription
    };

    return Head;

    function setStatusCode(statusCode) {
      $rootScope.statusCode = statusCode;
    }

    function setTitle(title) {
      $rootScope.documentTitle = title;
    }

    function setDescription(description) {
      $rootScope.documentDescription = description;
    }
  }
})($, _);

2 个答案:

答案 0 :(得分:0)

将所有头部变量放在像这样的对象中

而不是$rootScope.statusCode = statusCode;

$rootScope.head.statusCode = statusCode;

然后在html

中使用它

<meta property="og:title" ng-attr-content="{{ documentTitle }}" />

<meta property="og:title" ng-attr-content="{{ head.documentTitle }}" />

字符串不在组件之间绑定,只绑定对象

答案 1 :(得分:0)

我终于开始工作了。问题是Django以某种方式弄乱了模板。在Django不应解析的部分周围添加{%verbatim%}和{%endverbatim%}后,问题就解决了。