0

Я пытаюсь получить свой URL, используя UID вместо идентификатора в интеграции prismic ИО с угловым, но я получаю эту ошибку:Получение URL с помощью UID вместо идентификатора prismic гипергликемии

TypeError: Cannot read property 'slug' of undefined 
    at controllers.js:83 
    at wrappedCallback (angular.js:11682) 
    at wrappedCallback (angular.js:11682) 
    at angular.js:11768 
    at Scope.$eval (angular.js:12811) 
    at Scope.$digest (angular.js:12623) 
    at Scope.$apply (angular.js:12915) 
    at done (angular.js:8450) 
    at completeRequest (angular.js:8664) 
    at XMLHttpRequest.xhr.onreadystatechange (angular.js:8603) 

тот мой контроллер:

.controller('DocumentCtrl', ['$scope', '$routeParams', 'Prismic', '$location', function($scope, $routeParams, Prismic, $location) { 
     Prismic.document($routeParams.uid).then(function(document){ 
      if (document.slug === $routeParams.slug) { 
       Prismic.ctx().then(function(ctx) { 
        $scope.document = document; 
//  

     $scope.documentHtml = document.asHtml(ctx); 
       console.log(document); 
      }) 
     } 
     else if (document.slugs.indexOf($routeParams.slug) >= 0) { 
      $location.path('/document/'+document.uid+'/'+document.slug); 
     } 
     else { 
      // Should display some kind of error; will just redirect to/for now 
      $location.path('/'); 
     } 
    }); 
}]) 

и вот мой конфиг провайдер маршрут

config(['$routeProvider', function($routeProvider) { 
    $routeProvider.when('/:page?', {templateUrl: 'partials/home.html', controller: 'HomeCtrl'}); 
    $routeProvider.when('/document/:uid/:slug', {templateUrl: 'partials/document.html', controller: 'DocumentCtrl'}); 
// $routeProvider.when('/document/:slug', {templateUrl: 'partials/document.html', controller: 'DocumentCtrl'}); 
    $routeProvider.when('/search/:q*/:page?', {templateUrl: 'partials/search.html', controller: 'SearchCtrl'}); 
    $routeProvider.otherwise({redirectTo: '/'}); 

}]). 

и перенаправлять мои документы здесь:

<ul id="list"> 
    <li ng-repeat=" document in documents.results"> 
     <a href="#/document/{{document.uid}}/{{document.slug}}"> 
      {{document.slug}} 
     </a> 


    </li> 
</ul> 
+0

'document' является предопределенным словом js. Итак, попробуйте дать другое имя вместо 'document' и попробуйте еще раз. – SaiUnique

+0

Сообщение об ошибке указывает, что 'document' используется в' Prismic.document ($ routeParams.uid). Then (function (document) {'handler' undefined'. Переименуйте 'document' в что-то еще, поскольку это JavaScript predefined 'variable'. –

+0

такая же проблема, я получаю –

ответ

0

Вы не можете запросить документ по UID таким образом с помощью своего проекта. Он основан на модуле angularPrismicio (не является официальным), который выдает только функциональный документ для запроса по id (https://github.com/awulder/angular-prismicio/blob/master/src/angularPrismicio.js#L288). Если вы хотите сохранить этот модуль, вы должны просто запросить функцию getByUID, доступную на объекте api в вашем контексте. Но я бы посоветовал вам удалить этот модуль и просто использовать официальный javascript-kit, доступный здесь: https://github.com/prismicio/javascript-kit. Если вы хотите создать чистый проект angular2, вы можете установить его с помощью инструмента призменной командной строки. (npm install prismic-cli, а затем prismic init).