Генерация JSON-LD с помощью AngularJS

Я генерирую JSON-LD в теге script в разделе body, используя это решение в AngularJS 1.4.8. Директива определяется как

myApp.directive('jsonld', ['$filter', '$sce', function($filter, $sce) {
  return {
    restrict: 'E',
    template: function() {
      return '<script type="application/ld+json" ng-bind-html="onGetJson()"></script>';
    },
    scope: {
      json: '=json'
    },
    link: function(scope, element, attrs) {
      scope.onGetJson = function() {
        return $sce.trustAsHtml($filter('json')(scope.json));
      }
    },
    replace: true
  };
}]);

И jsonId определяется в контроллере

myApp.controller('MyWorkCtrl',['$scope', '$routeParams', '$http', function($scope, $routeParams, $http){
    $http.get('/works/' + $routeParams.workId + '.json').success(function(data) {   
        $scope.work = data;
        $scope.jsonId = {
            "@context": "http://schema.org",
            "@type": "Book",
            "creator": data['authors'],
            "name": data['title'],
            "isbn": data['isbn'],
            "bookFormat": data['page_size'],
            "numberOfPages": data['pages'],
            "translator": data['translators'],
            "image": data['image']
        };
    });    
}]);

Тогда это просто вопрос размещения директивы

  <jsonld data-json="jsonId"></jsonld>

Он отлично работает, за исключением того, что тег script с Json-LD генерируется в файле body. Как я могу переместить его в раздел head, как рекомендует Google?


person helcim    schedule 20.04.2017    source источник
comment
Где Google рекомендует это? Наличие JSON-LD script в body должно быть идеальным.   -  person unor    schedule 21.04.2017
comment
Разметка размещается внутри тега скрипта в заголовке HTML-страницы. developers.google.com/search/docs/guides/intro-structured- данные   -  person helcim    schedule 21.04.2017
comment
Ясно спасибо. Скорее всего, это просто формулировка, которая не так точна, как могла бы быть.   -  person unor    schedule 21.04.2017