Meteor 流星路由:如何扩展路由控制器?

Meteor 流星路由:如何扩展路由控制器?,meteor,iron-router,Meteor,Iron Router,我正在读《发现流星》一书,对分页一章有一个问题。 我的router.js中有一个代码: //router.js ... PostsListController = RouteController.extend({ template: 'postsList', increment: 4, postsLimit: function() { return parseInt(this.params.postsLimit) || this.increment;

我正在读《发现流星》一书,对分页一章有一个问题。 我的router.js中有一个代码:

//router.js
...
PostsListController = RouteController.extend({
    template: 'postsList',
    increment: 4,
    postsLimit: function() {
        return parseInt(this.params.postsLimit) || this.increment;
    },
    findOptions: function() {
        return {sort: {submitted: -1}, limit: this.postsLimit()};
    },
    subscriptions: function() {
        this.postsSub = Meteor.subscribe('posts', this.findOptions());
    },
    posts: function() {
        return Posts.find({}, this.findOptions());
    },
    data: function() {
        var hasMore = this.posts().count() === this.postsLimit();
        var nextPath = this.route.path({postsLimit: this.postsLimit() + this.increment});
        return {
            posts: this.posts(),
            ready: this.postsSub.ready,
            nextPath: hasMore ? nextPath : null
        };
    }
});
...
Router.route('/:postsLimit?', {
    name: 'postsList'
});
这个很好用。我的问题描述:

我有另一条路线“/news”,还有什么要为这条路线分页。我应该如何正确地扩展PostsListController以使其生效

我的每一篇文章都有一个标签选项,在本例中它是一个“新闻”,所以我只想看到带有“新闻”标签的文章。 我试图复制粘贴此controllerPostsListController并:

renamed it;
set another template;
changed:

posts: function() {
            return Posts.find({}, this.findOptions());
        }
致:

它不起作用,在我的/新闻页面上,我只能看到我所有的新闻文章和微调器。我补充说:

Router.route('/news/:postsLimit?', {
    name: 'newsTemplate',
    controller: NewsTemplateController
});
但是当我转到/news/1时,我会看到我所有的帖子,而不仅仅是一个和按钮“显示更多”。
我认为这种复制粘贴方法很糟糕,但我不知道如何使其正常工作。

您的第一期/news显示所有帖子是因为您的第一条路线规范太通用

Router.route('/:postsLimit?', {
    name: 'postsList'
});
此路由规范将向PostsListController发送带有一个参数的所有请求

即,所有这些路径都将路由到PostsListController:

/asdf /试验 /新闻

要解决此问题,您可能需要使第一条路线更加具体:

Router.route('/posts/:postsLimit?', {
    name: 'postsList'
});
我不知道为什么您在转到/news/1时会收到多个项目。 你能发布你的控制器代码吗

Router.route('/posts/:postsLimit?', {
    name: 'postsList'
});