使用 Ajax 加载 Keystone 中的帖子

Use Ajax to load posts in Keystone

我希望在到达文档底部后能够将前面的页面加载到当前页面中。我希望能够使用可重复使用的玉石部分..或类似的东西来做到这一点。

这都需要与 keystone.js 连接,因为它将为玉石部分提供数据

我会像这样创建 ajax 调用:

// Load more posts
var currentPage = 1;

function addNextPage(currentPage){
    currentPage++;
    var parameters = {
          "currentPage": currentPage
        };

    $.get( "/addNextPage", parameters, function(data) {                                 
        $.each(data, function (key) {
            $(".news").append(data);
        });
    });

}

var scrollNews = _.throttle(function(e) {                   
    if($(window).scrollTop() + $(window).height() > $(document).height() - 300) {
        addNextPage(currentPage);
    }
}, 500);
window.addEventListener("scroll", scrollNews, false);

如何让 keystonejs 呈现并响应特定分页页面的部分内容?

您可以将其添加到您各自的路线页面

app.get("/addNextPage",function(req, res, next){
    var view = new keystone.View(req, res),
    locals = res.locals;

    // Renit locals
    locals.section = 'news';
    locals.filters = {
        category: req.params.category
    };
    locals.data = {
        posts: [],
        categories: []
    };

    var q = keystone.list('Post').paginate({
            page: req.query.currentPage || 1,
            perPage: 3
        })
        .where('state', 'published')
        .sort('-publishedDate')
        .populate('author categories');


    q.exec( function(err, results) {
        if (err) {
            throw err;
        } else {
            console.log('Recieved posts for page');
            locals.data.posts = results;

            jade.renderFile('templates/partials/newsPost.jade', locals, function(err, results) {
                if (err) {
                    throw err;
                } else {
                    console.log('Rendered Jade');
                    globalRes(results)
                }
            });
        }
    });

    function globalRes(results){
        res.send(results);
    }
});