点击metro.js获取一个object id




这是我的问题:我想尝试处理流星上的帖子,所以我创建了一个帖子的模式和创建它们的方法。然后我想查看用户创建的所有帖子,所以我在视图中列出了它们。但现在我想通过这个列表到达一个特定的职位。这与我们在"你的第二个流星应用程序"中所做的完全相同,但它不起作用。。。

  • 以下是我的路由器:

Router.route('/posts', {
    name: "posts",
    data: function(){
        var posts = Posts.find();
        return {
            posts: posts
        };
    },
    waitOn: function(){
        return Meteor.subscribe("userPosts",Meteor.user().username);
    }
});
Router.route('/post/:_id', {
    name: "post",
    data: function(){
        return {
            posts: posts = Posts.findOne({_id:id})
        };
    },
    waitOn: function(){
        return Meteor.subscribe("userPosts",Meteor.user().username);
    }
});

  • 下面是我的模板:

<template name='posts'>
    <h3>Nouveau post</h3>
    <form>
        <label>Titre</label><input type="text" name="titre" /><br />
        <label>Contenu</label><textarea name="contenu" ></textarea><br />
        <button type="submit" >Envoyer</button>
    </form>
    <h3>Posts list</h3>
    <ul>
    {{#each posts}}
        <li><a href="/post/{{_id}}">{{ title }}</a></li>
    {{/each}}
    </ul>
</template>

<template name='post'>
    <h2>Here is your post:</h2>
    <div>
        <p>{{title}} , by {{author}}</p>
        <p>{{content}}</p>
    </div>
</template>

我得到了这样的东西:


这是您的帖子:
,通过


希望你们能帮助我,谢谢。

编辑:

多亏了菲利浦,问题解决了。

有两件事需要尝试,第一,在url中使用_id,您需要在数据中使用this.params._id而不是id;第二,直接返回findOne,而不是将其设置为data.posts

data: function(){ 
    return Posts.findOne({_id:this.params._id});
}

相关内容

最新更新