我尝试将我的路线http://localhost:3000/posts/id更改为http://localhost:3000/posts/title但是在更改来自' _id'的router.js中的参数时到标题'我得到空页。
我有一个表现良好的表格:
Template.addpost.events({
'submit form': function(e) {
e.preventDefault();
var query = {
title: $(e.target).find('[name=title]').val(),
text: $(e.target).find('[name=text]').val() ,
image: $(e.target).find('[name=image]').val(),
intro: $(e.target).find('[name=intro]').val(),
friendlyTitle: slugify($(e.target).find('[name=title]').val()),
author: Meteor.user().profile.name
};
query._id = Posts.insert(query);
Router.go('index');
}
});
我的router.js:
Router.configure({
layoutTemplate: 'layout',
loadingTemplate: 'loading',
waitOn: function() { return Meteor.subscribe('posts'); }
});
Router.map(function() {
this.route('index', {path: '/'});
this.route('addpost', {path: '/add'});
this.route('postPage', {
path: '/posts/:friendlyTitle', //empty page with friendlyTitle, but with _id working good
data: function() { console.log(this.params.friendlyTitle);return Posts.findOne(this.params.friendlyTitle); //same, with _id working good}
});
});
Router.onBeforeAction('loading');
postPage.html:
<template name="postPage">
<div class="container main">
<div class="col-md-12"><h1>{{title}}</h1></div>
<div class="col-md-12">
{{{text}}}
</div>
</div>
</template>
答案 0 :(得分:2)
您需要指定查询条件。
你有这个。
return Posts.findOne(this.params.friendlyTitle);
改变这一点。
return Posts.findOne({title:this.params.friendlyTitle});
如果不是,则this.params.friendlyTitle
会像_id
一样将Router.route('/posts/title', {
name: 'postPage',
waitOn:function(){
return Meteor.subscribe('posts'); //or use the new subscritionReady
},
data: function() {
console.log(this.params.title)
console.log(Posts.findOne({title:this.params.title});)
return Posts.findOne({title:this.params.title});
}
});
返回并返回空查询
路线更干净*
将路线更改为此。
Router.map
使用Router.map(function () {
this.route('postPage', {
path: '/posts/:title',
waitOn:function(){
return Meteor.subscribe('posts'); //or use the new subscritionReady
},
data: function(){
return Posts.findOne({title:this.params.title});
}
});
});
Router.map
对每条路线使用différentesRouter.route
或{{1}}。