gpt4 book ai didi

javascript - 无法同时实现 KeystoneJS 分页

转载 作者:行者123 更新时间:2023-12-03 04:34:50 26 4
gpt4 key购买 nike

我正在尝试在 keystone js 中实现分页,并且我的操作如下:

型号

var keystone = require('keystone');
var Types = keystone.Field.Types;

var Test = new keystone.List('Test', {
map: {name: 'title'},
label: 'Test',
singular: 'Test',
plural: 'Tests',
autokey: {path: 'slug', from: 'title', unique: true}
});

Test.add({
description: {type: Types.Html, wysiwyg: true, height: 300 }
});

Test.register();

路线/ View

var keystone = require('keystone');
var Test = keystone.list('Test');
exports = module.exports = function(req, res) {

var view = new keystone.View(req, res);
var locals = res.locals;

// Set locals
locals.section = 'test';
locals.data = {
test: []
};


Test.paginate({
page: req.query.page || 1,
perPage: 2,
maxPages: 5
})
.exec(function(err, results) {
locals.data.test = results;
next(err);
});

// Load All Terms
view.query('test', keystone.list('Test').model.find());

// Render view
view.render('test');
}

在 Index.js 中

app.all('/test', routes.views.test);

在 middleware.js 中

res.locals.navLinksFooter = [
{ label: 'Test', key: 'test', href: '/test' },
.....
];

模板

 <div class="row">
<div class="col-xs-12">
<span class="pull-right">
{{>pagination}}
</span>
</div>
</div>

<div class="row row-content panel--outer panel--outer--trans">
<div class="col-xs-12" id="panel--news-detail">
{{# each test}}
<p>{{{description}}}</p>
{{/each}}
</div>
</div>

不幸的是,当我尝试访问该页面时,出现以下错误:

“ReferenceError:下一个未定义”

一些提示和可能的原因。我已经使用以下方法在单独的页面上为博客文章设置了分页:

locals.data = {
test: []
};

如果我注释掉“下一个(错误)”,则会出现分页按钮,但单击箭头会将我带到博客/新闻项目的第二页。

事情显然在某个地方变得困惑了。我怀疑这是由于我对本地人处理不当造成的,但我似乎无法在关键网站上找到有关本地人应该如何工作的任何深入解释。

我最终想对 mongo 集合应用不同的过滤器,并让它在一系列引导选项卡中运行,但我认为我需要首先理清基础知识。

有人遇到过类似的情况并能够找到解决方案吗?

最佳答案

next是在 Express 路由中运行的回调函数。您根本没有将其定义为 route 的参数;问题的一部分还在于您尝试同步加载数据,这在这里不起作用。

使用view.init函数公开 next函数,然后当您将数据库中的信息加载到 locals.data 时调用它.

路线/景观

var keystone = require('keystone');
var Test = keystone.list('Test');
exports = module.exports = function(req, res) {

var view = new keystone.View(req, res);
var locals = res.locals;

// Set locals
locals.section = 'test';
locals.data = {
test: []
};


view.on('init', function (next) {
Test.paginate({
page: req.query.page || 1,
perPage: 2,
maxPages: 5
})
.exec(function(err, results) {
locals.data.test = results;
next(err);
});
});

// Load All Terms
view.query('test', keystone.list('Test').model.find());

// Render view
view.render('test');
}

关于javascript - 无法同时实现 KeystoneJS 分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43339592/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com