Angularjs 使用uid而不是id获取URL

Angularjs 使用uid而不是id获取URL,angularjs,seo,content-management-system,angularjs-ng-route,Angularjs,Seo,Content Management System,Angularjs Ng Route,在将prismic io与angular集成时,我试图使用uid而不是id获取URL,但出现以下错误: 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.

在将prismic io与angular集成时,我试图使用uid而不是id获取URL,但出现以下错误:

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>

您不能在项目中通过UID查询文档。 它基于模块angularPrismicio(非官方),该模块仅公开一个函数文档,以便通过id()进行查询。 如果您想保留这个模块,您应该在上下文中使用api对象上可用的函数getByUID进行查询。 但我建议您删除此模块,只使用此处提供的官方javascript工具包:。
如果您想要一个干净的angular2项目,可以使用prismic命令行工具安装它。(npm安装prismic cli,然后安装prismic init)。

文档是js预定义的单词。因此,尝试用另一个名称代替
文档
,然后重试。错误消息表明
Prismic.document($routeParams.uid)中使用的
文档
。然后(函数(文档){
处理程序是
未定义的
。重命名
文档
,因为它是一个JavaScript预定义的“变量”。同样的问题,我用另一个名称进行了测试?是的,同样的错误,你可以克隆我的repo。我试图做的是将URL从将id放入其中更改为类型。我想将此更改为::谢谢你