Angularjs 使用uid而不是id获取URL
在将prismic io与angular集成时,我试图使用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.
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放入其中更改为类型。我想将此更改为::谢谢你